Lista powiązanych wpisów bazując na tagach

Powiązane posty to niezwykle użyteczna metoda zatrzymująca na dłużej użytkownika naszej strony. Oto 2 rozwiązania pozwalające na dodanie listy powiązanych wpisów dające 2 różne rezultaty:

5 powiązanych wpisów bazując na pierwszym tagu

Jeśli post posiada dwa tagi: ‘ptaki’ i ‘ryby’ to metoda ta zwróci 5 możliwych postów wyłącznie spod tagu ‘ptaki’.

//lista 5 powiązanych postów bazując na pierwszy tagu
$tags = wp_get_post_tags($post->ID);
    echo 'Powiązane posty';

if ($tags) {
  $first_tag = $tags[0]->term_id;

  $args=array(
    'tag__in' => array($first_tag),
    'post__not_in' => array($post->ID),
    'posts_per_page'=>5,
  );

  $my_query = new WP_Query($args);
  if( $my_query->have_posts() ) {
    echo '<h3>Powiązane posty</h3>';
    while ($my_query->have_posts()) : $my_query->the_post(); ?>
      <a href="<?php the_permalink() ?>" rel="bookmark"><div><?php the_title(); ?></div></a>
    <?php
    endwhile;
  }
  wp_reset_query();
}

Źródło: Rozwinięta metoda użytkownika MichaelH

5 powiązanych wpisów bazując na wszystkich tagach

Aby nie powielić rezultatu z pierwszego rozwiązania, wpisy zwracane są w losowej kolejności

//lista 5 powiązanych postów bazując na wszystkich tagach
$tags = wp_get_post_tags($post->ID);

if ($tags) {
  $tags_ids = array();

  foreach($tags as $tag){
    $tags_ids[]=$tag->term_id;
  }

  $current_tag = $tag->term_id;
  $args=array(
    'tag__in' => $tags_ids,
    'post__not_in' => array($post->ID),
    'posts_per_page'=>5,
    'orderby' => 'rand',
  );

  $my_query = new WP_Query($args);
  if( $my_query->have_posts() ) {
    echo '<h3>Powiązane posty</h3>';
    while ($my_query->have_posts()) : $my_query->the_post(); ?>
      <a href="<?php the_permalink() ?>" rel="bookmark"><div><?php the_title(); ?></div></a>
    <?php
    endwhile;
  }
  wp_reset_query();
}

Obie metody należy użyć w pliku single.php