Powiązane wpisy = przywiązany czytelnik
Jednym z podstawowych zadań jakie musi wypełnić nasz blog, kiedy już ktoś na niego zawita, jest sprawienie, żeby pozostał u nas jak najdłużej. Kluczem jest tu oczywiście (jak zresztą w całym blogowaniu) odpowiednia treść. Można i należy jednak zadbać o dodatkowe mechanizmy utrzymujące czytelnika na blogu. Dobrą metodą jest dorzucenie pod każdym postem listy podobnych wpisów, aby osoba zainteresowana danym tematem mogła łatwiej eksplorować naszego bloga. Zrobić to można na kilka różnych sposobów, przy czym każdy ma swoje wady i zalety.
Modyfikacja skórki
Sprawę wyświetlenia powiązanych wpisów możemy rozwiązać dodając do pliku single.php kilka linijek kodu. Najlepiej zrobić to tuż pod treścią wpisu lub pod linkami nawigacyjnymi do postu poprzedniego i następnego. Jeśli chcemy wyświetlić powiązane wpisy na podstawie ich tagów wklejamy w to miejsce następujący kod*:
$tags = wp_get_post_tags($post->ID);
if ($tags) {
$tag_ids = array();
foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
$args=array(
‘tag__in’ => $tag_ids,
‘post__not_in’ => array($post->ID),
’showposts’=>5, // Number of related posts that will be shown.
‘caller_get_posts’=>1
);
$my_query = new wp_query($args);
if( $my_query->have_posts() ) {
echo ‘<h3>Related Posts</h3><ul>’;
while ($my_query->have_posts()) {
$my_query->the_post();
?>
<li><a href=”<?php the_permalink() ?>” rel=”bookmark” title=”Permanent Link to <?php the_title_attribute(); ?>”><?php the_title(); ?></a></li>
<?php
}
echo ‘</ul>’;
}
}
?>
Jeśli podobne posty mają być dobierane na podstawie kategorii, kod* wygląda następująco:
$categories = get_the_category($post->ID);
if ($categories) {
$category_ids = array();
foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;$args=array(
‘category__in’ => $category_ids,
‘post__not_in’ => array($post->ID),
’showposts’=>5, // Number of related posts that will be shown.
‘caller_get_posts’=>1
);
);
$my_query = new wp_query($args);
if( $my_query->have_posts() ) {
echo ‘<h3>Related Posts</h3><ul>’;
while ($my_query->have_posts()) {
$my_query->the_post();
?>
<li><a href=”<?php the_permalink() ?>” rel=”bookmark” title=”Permanent Link to <?php the_title_attribute(); ?>”><?php the_title(); ?></a></li>
<?php
}
echo ‘</ul>’;
}
}
?>
Jak widać sprawa nie jest bardzo skomplikowana. Pożądany efekt uzyskujemy bez instalowania niepotrzebnych plugin’ów, które mogłyby zwolnić nam Wordpress’a.
Shortcode
Z tej metody warto skorzystać, jeśli chcemy, aby powiązane wpisy pojawiały się jedynie pod niektórymi postami. Do pliku functions.php wklejamy następujący kod**:
extract(shortcode_atts(array(
‘limit’ => ‘5′,
), $atts));global $wpdb, $post, $table_prefix;
if ($post->ID) {
$retval = ‘<ul>’;
// Get tags
$tags = wp_get_post_tags($post->ID);
$tagsarray = array();
foreach ($tags as $tag) {
$tagsarray[] = $tag->term_id;
}
$tagslist = implode(‘,’, $tagsarray);
// Do the query
$q = “SELECT p.*, count(tr.object_id) as count
FROM $wpdb->term_taxonomy AS tt, $wpdb->term_relationships AS tr, $wpdb->posts AS p WHERE tt.taxonomy =’post_tag’ AND tt.term_taxonomy_id = tr.term_taxonomy_id AND tr.object_id = p.ID AND tt.term_id IN ($tagslist) AND p.ID != $post->ID
AND p.post_status = ‘publish’
AND p.post_date_gmt < NOW()
GROUP BY tr.object_id
ORDER BY count DESC, p.post_date_gmt DESC
LIMIT $limit;”;
$related = $wpdb->get_results($q);
if ( $related ) {
foreach($related as $r) {
$retval .= ‘
<li><a title=”‘.wptexturize($r->post_title).’” href=”‘.get_permalink($r->ID).’”>’.wptexturize($r->post_title).’</a></li>
‘;
}
} else {
$retval .= ‘
<li>No related posts found</li>
‘;
}
$retval .= ‘</ul>
‘;
return $retval;
}
return;
}
add_shortcode(‘related_posts’, ‘related_posts_shortcode’);
Od tej chwili wpisanie w treści wpisu komendy “[related_posts]” spowoduje wyświetlenie w danym miejscu powiązanych postów. Jeśli potrzebujecie pomocy w radzeniu sobie z shortcodes, zajrzyjcie do wpisu “Shortcodes czyli Wordpress na skróty”.
Obie opisane metody mają jedną zasadniczą wadę. Nie pozwalają nam na żadną elastyczność w kwestii wyboru czynników, które decydują o podobieństwie wpisów. Wyświetlają się posty o takich samych tagach lub będące w tej samej kategorii. W przypadku bardziej skomplikowanego bloga może to być pewien problem. Jeśli zależy nam, aby mieć większy wpływ na powiązane wpisy, zmuszeni jesteśmy skorzystać z odpowiedniej wtyczki.
Wtyczka
Istnieje wiele wtyczek służących wyświetlaniu w Wordpress’ie powiązanych wpisów. Nie zajmowałem się szerzej ich testowaniem choćby dlatego, że właściwie od razu natknąłem się na taką, która bardzo dobrze spełnia moje oczekiwania. Yet Another Related Posts Plugin wiąże ze sobą posty na podstawie opcji, które sami wybierzemy. Możemy na przykład zdecydować, że powiązane mają być wpisy o podobnym tekście oraz przynajmniej dwóch takich samych tagach, wykluczając jednocześnie podobieństwo na podstawie kategorii. Zapewnia również szereg innych funkcjonalności. Można dzięki niemu, między innymi, wykluczyć posty o określonych tagach z listy wpisów powiązanych, zdecydować w którym miejscu bloga lista powiązanych wpisów się pojawi a także dodać taką listę do RSS.
* kod z bloga Bin-Blog
** kod z bloga WP Recipes

W kodzie dotyczącym powiązywania postów na podstawie kategorii jest błąd. wyskakuje mi że “);” jest błędne, zawsze, że 23cia linijka w single.php jest zła.
Pozdrawiam!
Sprawa rozbija się o to, że prawidłowy apostrof w kodzie na blogu wyświetla się jako jego błędna wersja. Póki co, nie wiem, jak to obejść. Rozwiązaniem doraźnym jest zamiana apostrofów na prawidłowe (proste) lub skopiowanie kodu z linku źródłowego pod postem.
Pozdrowienia!
Teraz powinno być ok.
Jesli chodzi o linki powiazane, to ja stosuje u siebie widget lineye.pl, który jest przy okazji reklamuje mojego bloga. Wczesniej mialem blog po angielsku i kozystałem tam z wahoha.com, które dziala dokladnie tak samo.
Ogolnie, to chcialem polecic takie serwisy. Nie dosc, ze wyswietlaja linki powiazane, to jeszcze zwiekszaja ruch na blogu.
jest chyba jeszcze serwis midg.com ale on rowniez jest angielskojezyczny
Prawdę mówiąc, nie stosowałem jeszcze podobnych rozwiązań. Ale być może warto to kiedyś sprawdzić. Pozdrowienia!
Przedstawiona w artykule metoda świetnie się sprawdza, przede wszystkim można na dłużej przyciągnąć czytelnika, efekty widać też po statystykach w GA. Na pewno warto zainwestować w taki system promocji powiązanych wpisów.
Co do samych wtyczek, YARPP jest zdecydowanie najlepszy, zastosowany algorytm trafniej potrafi wyliczyć współczynnik pokrewieństwa.
Mariusz Kołacz napisał/a ostatnio na blogu: Efektywne obliczanie ilości słów i znaków w tekstach
ja stosuje u siebie widget lineye.pl