Свързани публикации цикъл на wordpress с изключение на определени тагове

Има ли начин да изключите определени тагове от цикъл на свързани публикации, докато той все още намира другите тагове? Ето кода, който имам, но съм наясно, че няма такава стойност като tag_slug__not_in, но не искам да използвам идентификатори, защото са объркани, няма ли начин да изключа тагове чрез slug и като цяло това ще работи, защото аз казвам, че всички включени етикети са някакви? Всяка помощ е високо оценена!

<?php  //for use in the loop, list 5 post titles related to first tag on current post
$backup = $post;  // backup the current object
$tags = wp_get_post_tags($post->ID);
$tagIDs = array();
if ($tags) {
$tagcount = count($tags);
for ($i = 0; $i < $tagcount; $i++) {
  $tagIDs[$i] = $tags[$i]->term_id;
}
$args=array(
  'tag__in' => $tagIDs,
  'tag_slug__not_in' => array('investing', 'investment', 'travel', 'shopping', 'retail',       'organisations', 'governments', 'government', 'individuals', 'entrepeneurs', 'companies', 'markets', 'finance', 'clean-tech', 'money', 'world', 'business'),
  'post__not_in' => array($post->ID),
  'showposts'=>5,
  'caller_get_posts'=>1,
  'post_type' => array('post','indepth','feature','interview')
);
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) { ?>
<h3>Related Articles</h3>
<?php  while ($my_query->have_posts()) : $my_query->the_post(); ?>
    <ul><li><p><a href="/bg<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></p></li>
    </ul>
  <?php endwhile;
} else { ?>

<?php }
}
$post = $backup;  // copy it back
wp_reset_query(); // to use the original query again
?>

person Amy    schedule 13.03.2012    source източник


Отговори (1)


Съгласен съм, доста е глупаво да нямат параметър tag_slug__not_in.

Във всеки случай мисля, че можете да използвате параметъра tax_query за WP_Query, за да постигнете това, което искате да направите. Следният код не е тестван:

$args=array(
  'post__not_in' => array($post->ID),
  'showposts'=>5,
  'caller_get_posts'=>1,
  'post_type' => array('post','indepth','feature','interview'),
  'tax_query' => array(
    'relation' => 'OR',
    array(
        'taxonomy' => 'post_tag',
        'field' => 'id',
        'terms' => $tagIDs
    ),

    array(
        'taxonomy' => 'post_tag',
        'field' => 'slug',
        'terms' => array('investing', 'investment', 'travel', 'shopping', 'retail', 'organisations', 'governments', 'government', 'individuals', 'entrepeneurs', 'companies', 'markets', 'finance', 'clean-tech', 'money', 'world', 'business'),
        'operator' => 'NOT IN'
    )
  )
);

Ако това не проработи, можете да опитате да прочетете повече за таксономичните параметри в WP_Query и вижте дали добавянето на ключ relation в масива tax_query може допълнително да помогне при решаването на вашия проблем.

person chrisn    schedule 13.03.2012
comment
Страхотно, това работи до известна степен, но това, което по същество прави, е повече или по-малко да разединява всичко.. това, което се опитвам да направя, е да го накарам да игнорира тези тагове, но да обърне внимание на други тагове в публикациите, които са маркирани с че. Не съм сигурен дали това наистина е възможно, но да бъда честен, тъй като очевидно се казва не показвайте публикации с този етикет, когато имам предвид нещо повече, не показвайте публикации, ако те имат само този етикет общ с вас. Това има ли смисъл? - person Amy; 14.03.2012
comment
По принцип искам да игнорира тези тагове, но не и публикациите, така че да продължава да търси други свързани тагове в тези публикации. Трикки един. Ммм, не съм сигурен, че е възможно, сега си мисля за това. - person Amy; 14.03.2012
comment
Проверете моя актуализиран отговор. Мисля, че това може да е това, което искате да направите. - person chrisn; 14.03.2012
comment
Мисля, че това кара NOT IN да не работи, тъй като просто се отнася отново до всички тагове mm това е сложно :( - person Amy; 14.03.2012
comment
Можете ли да промените публикацията си и да дадете пример какво очаквате да се случи при определени публикации и тагове? - person chrisn; 15.03.2012