Исключить текущий пост в al oop, используя * __ in (исключить без 'post__not_in') - PullRequest
0 голосов
/ 10 февраля 2020

Я бы хотел исключить текущую запись из al oop, которая использует аргумент 'tag__in', который ставит проблему как post__not_in, а первые являются взаимоисключающими

Примечание: вы не можете комбинировать post__in и post__not_in в одном запросе.

http://codex.wordpress.org/Class_Reference/WP_Query

Как удалить текущую запись из этого l oop?

    <?php
    global $post;
    $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),
    'posts_per_page'=>2 // Number of related posts that will be shown.
    );
    $my_query = new wp_query( $args );
    if( $my_query->have_posts() ) {
    while( $my_query->have_posts() ) {
    $my_query->the_post();
    HTML HERE }}
    else { HTML HERE }}

Спасибо

1 Ответ

0 голосов
/ 10 февраля 2020

Действительно, они несовместимы по умолчанию, но вы можете обойти это, чтобы напрямую использовать параметр tax_query.

Еще один совет: когда вы разрабатываете в WP, вам следует включить WP_DEBUG постоянная на вашем wp-config.php. Он пометил, что caller_get_posts устарел.

$query = new WP_Query( [
    'tax_query'        => [
        [
            'taxonomy' => 'post_tag',
            'terms'    => $tag_ids,
            'operator' => 'IN',
        ],
    ],
    'post__not_in'     => [ $post->ID ],
    'posts_per_page'   => 2, // Number of related posts that will be shown.
    // 'caller_get_posts' => 1 // Removing since this was deprecated.
] );

Дайте мне знать, если этот код работает.

наилучшими пожеланиями,

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