Zaključavanje dijela sadržaja samo za logirane korisnike - WordPress

Pozdrav svima

Potrebno mi je rješenje za zaključavanje dijela sadržaja na WordPress web stranici, odnosno na dvije stranice. Jedna stranica koristi u pozadini Elementor, a druga WP Bakery.

Razmotrio sam i testirao opcije koje se nude na tržištu (za sada samo besplatne), ali nisam pronašao ono što sam tražio. (Besplatne zato što je ovo pokušaj testiranja korisničke naplate na cca 2 mjeseca, a onda ćemo vidjeti što i kako).

Ideja je da zaključan samo donji dio sadržaja, odnosno drugu polovicu sadržaja. Primjerice, kada objavim članak od 1000 riječi - svim korisnicima želim prikazati prvih 250 riječi bez ikakvih ograničenja. Nakon cca 250 riječi, ide poruka za nelogirane korisnike na kojoj ih se poziva da se logiraju i pročitaju članak do kraja. Dakle, prvih 250 riječi je vidljivo svima, a drugih 750 riječi (+ slika i videa) samo logiranim korisnicima. Kako to najlakše izvesti?

  1. ideja: Stavljanje Popup-a za logiranje
  • razmišljao sam u smjeru stavljanja popup-a na članak, koji se aktivira (preko cijelog zaslona) ili nakon 30-ak sekundi ili nakon što korisnik preskrola 25% članka. Na taj način bih omogućio Google tražilici da pročita čitav sadržaj i bolje rangira sadržaj na tražilici. No, problem je što AdBlockeri blokiraju popup prozore pa bi zapravo 50% korisnika čitalo sadržaj bez ikakvih ograničenja i obavijesti. Može li se na taj način to riješiti - da se dobije i dobar SEO score i da se ograniči čitanje nelogiranim korisnicima?
  1. ideja: Klasično ograničavanje kakvo imaju poznati portali
  • WordPress sam po sebi nudi mogućnost zaključavanja sadržaja opcijom Private, no ta opcija ne prikazuje ni jednu rečenicu sadržaja (a meni treba prikaz npr. 250 prvih riječi). Dakle, ta opcija ne dolazi u obzir. Isprobao sam i neke pluginove koji također zaključavaju čitav sadržaj, a moguće je dodati samo neki uvodni paragraf za prikaz. No, meni bi trebalo samo “sakriti donjih 75% članka”, dok bi gornji dio članka trebao biti vidljiv (+ obavijest da je za nastavak članka potreban login u web). Neki portali (npr. večernji ili jutarnji) imaju to lijepo riješeno i volio bih nešto u tom stilu.

Možete li mi dati neke savjete i ideje kako ovo iznad riješiti? Volio bih da bude i dobar SEO ranking i da korisnici ne vide čitav sadržaj bez logiranja. Što se tiče logiranja - mogu ih dodati kao klasične usere na web kroz već postojeće WordPress sučelje.

Hvala unaprijed na sugestijama, idejama, primjerima i svim savjetima.

Pa kroz functions.php napraviš petlju koja će za nelogirane korisnike stripati (odsijeći) sve iznad 250 karaktera, tih hook-ova imaš gotovih po webu, a za featured image napraviš isto - također petlju, odnosno da se vidi ta slika samo za logirane korisnike.

Videa ili Galerije slika nikada ne dodajem na mjesto Featured image u WP-u jer se često mijenjaju teme pa neke nemaju tu funkciju, nego sve dodajem u glavni content, pa na taj način i to možeš odmah unaprijed ukalkulisati - iza 250. karaketra u sadržaju.

Otprilike nekako tako bi moglo, jednom sam i sam tražio sličan plugin, ali nema ih baš mnogo na izbor, onda se ne updateaju redovno za novije verzije WP-a… Možda nešto ovako “ručno” bi se dalo uraditi…

Evo ti kako je to uradio chatGPT-a kao functions.php. Naravno prvo ako možeš testiraj negde ili pokušaj na live sajtu pa vidi dal ovo radi…
ja sam mu napisao ovako: Write a PHP function for a WP site where up to 250 words are visible to users while the other half of the content remains locked, the first 250 words are visible to everyone, and the second 750 words (+ images and videos) only to logged in users

// Add this code to your theme's functions.php file

function custom_content_shortcode($atts, $content = null) {
    // Check if the user is logged in
    if (is_user_logged_in()) {
        // Display the full content for logged-in users
        return do_shortcode($content);
    } else {
        // Display only the first 250 words for non-logged-in users
        $words = explode(' ', $content);
        $visible_content = implode(' ', array_slice($words, 0, 250));
        
        // Add a message or a link to encourage users to log in to see the full content
        $login_link = wp_login_url(get_permalink());
        $locked_content = '<p>Unlock the full content by <a href="' . $login_link . '">logging in</a>.</p>';

        return do_shortcode($visible_content) . $locked_content;
    }
}

// Register the shortcode
add_shortcode('custom_content', 'custom_content_shortcode');

zatim da bi to radilo koristi [custom_content] kratki kod u tvojim objavama

[custom_content]
This is the content that will be visible to everyone.
It can contain up to 250 words.
<!-- More content here, visible only to logged-in users -->
[/custom_content]
1 Like

:grinning:

Slično sam ga pitao, da je skoro isti odgovor…

1 Like