Wordpress связанные сообщения по пользовательской проблеме таксономии - PullRequest
1 голос
/ 08 июня 2010

Я пытаюсь отобразить похожие посты на основе таксономии custum.Я нашел запрос на wordpress.org такого рода работ.Однако оригинальный пост дублируется в результатах несколько раз.(слова - это название пользовательской таксономии, которую я использую). То, что происходит, так это то, что один пост дублируется в зависимости от установленного количества showpost.Есть идеи, что может вызвать это?

Код:

<?php
//for in the loop, display all "content", regardless of post_type,
//that have the same custom taxonomy (e.g. words) terms as the current post
$backup = $post;  // backup the current object
$found_none = '<h2>No related posts found!</h2>';
$taxonomy = 'words';//  e.g. post_tag, category, custom taxonomy
$param_type = 'words'; //  e.g. tag__in, category__in, but genre__in will NOT work
$post_types = get_post_types( array('public' => true), 'names' );
$tax_args=array('orderby' => 'none');
$tags = wp_get_post_terms( $post->ID , $taxonomy, $tax_args);
if ($tags) {
  foreach ($tags as $tag) {
    $args=array(
      "$param_type" => $tag->slug,
      'post__not_in' => array($post->ID),
      'post_type' => $post_types,
      'showposts'=>5,
      'caller_get_posts'=>1
    );
    $my_query = null;
    $my_query = new WP_Query($args);
    if( $my_query->have_posts() ) {
      while ($my_query->have_posts()) : $my_query->the_post(); ?>
        <h3><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>
        <?php $found_none = '';
      endwhile;
    }
  }
}
if ($found_none) {
echo $found_none;
}
$post = $backup;  // copy it back
wp_reset_query(); // to use the original query again
?>

Ответы [ 2 ]

0 голосов
/ 21 января 2013

Что касается меня, я использую этот плагин для пользовательского поста таксономии.Я надеюсь, что плагин поможет вашей проблеме.

0 голосов
/ 08 июня 2010

Внутри цикла foreach вы получаете дубликаты. Этот код фактически говорит:

  1. Получить все условия для таксономии типа $param_type
  2. За каждый термин получите 5 постов, помеченных этим термином

Так что, если у вас есть сообщение, помеченное несколькими терминами одной и той же таксономии, скорее всего, оно будет появляться несколько раз.

Вы можете многократно добавлять запрошенные записи в массив post__not_in, чтобы они не появлялись снова;

  1. Добавить $post_not_in = array($post->ID); чуть выше if ($tags) {

  2. Затем замените строку post__not_in' => array($post->ID), на post__not_in' => $post_not_in,.

  3. Наконец, поместите $post_not_in[] = get_the_ID(); в свой цикл while, после $found_none = '';

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...