WordPress: похожие сообщения по тегам, но в той же категории - PullRequest
3 голосов
/ 10 января 2011

Я использую приведенный ниже скрипт для получения связанных постов по тегам, но заметил, что если у меня есть изображение птицы с тегом white и таблица также с тегом white , таблица будет отображаться в разделе связанных сообщений птицы. Есть ли способ получить сообщения, которые соответствуют хотя бы одной из категорий, чтобы птица и таблица не были связаны, если они не разделяют одну категорию?

Я попытался установить массив category__in внутри $ args, но не повезло!

<?php
  $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'=>6, // Number of related posts that will be shown.
    'caller_get_posts'=>1
);
$my_query = new wp_query($args);
if( $my_query->have_posts() ) {
    while ($my_query->have_posts()) {
        $my_query->the_post();
    ?>

    <?php if ( get_post_meta($post->ID, 'Image', true) ) { ?>
        <a style="text-decoration: none;" href="<?php the_permalink(); ?>">
            <img style="max-height: 125px; margin: 15px 10px; vertical-align: middle;" src="<?php bloginfo('template_directory'); ?>/scripts/timthumb.php?src=<?php echo get_post_meta($post->ID, "Image", $single = true); ?>&w=125&zc=1" alt="" />
        </a>
    <?php } ?>      

    <?php
    }
}
  }
?>

1 Ответ

0 голосов
/ 11 января 2011

Кажется, что Wordpress не создает многократное объединение таблиц wp_term_taxonomy и wp_term_relationships, что странно!
В любом случае, быстрый взлом (не эффективный) заключается в том, чтобы после получения сообщений на основе тегов сравнить исходные категории сообщений с возвращенными:

$tags = wp_get_post_tags($post->ID);
$cats = wp_get_post_categories($post->ID);

...

$my_query->the_post();
$resCats = wp_get_post_categories($post->ID);
$resArr = array_diff($resCats, $cats);
if(count($resArr) != count($resCats)) {

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

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