Удалить Избранные посты из Wordpress Loop - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь найти способ исключить сообщения, помеченные как «избранные», на странице «последние сообщения».

Как вы можете видеть ниже, на странице моих последних сообщений отображаются только сообщения из 2 категорий (cat1 и cat2). Проблема в том, что через некоторое время я добавлю сообщение в одну из категорий ниже и отмечу его как "рекомендуемая ссылка" или что-то еще. Поэтому, когда вы просматриваете страницу, вы в основном видите избранные посты в заголовке (OUT of l oop) и в теле (IN the l oop). Как бы я go об удалении избранного сообщения, которое находится в l oop?

              <?php
                // args query
                $args = array(
                    'post_type'      => 'post',
                    'posts_per_page' => 3,
                    'order'          => 'DESC',  
                    // display only posts in specifics categories (slug)
                    'category_name' => 'cat1, cat2' 
                ); 

                // custom query
                $recent_posts = new WP_Query($args);

                // check that we have results
                if($recent_posts->have_posts()) : ?>

            <?php 
                // start loop
                while ($recent_posts->have_posts() ) : $recent_posts->the_post();
            ?>

Для тех, кто интересуется, я попробовал следующее, но это не сработало:

                $args = array(
                    'post_type'      => 'post',
                    'posts_per_page' => 3,
                    'order'          => 'DESC',  
                    // display only posts in specifics categories (slug)
                    'category_name' => 'cat1, cat2',
                    'meta_query' => array(
                        array(
                            'key'     => 'featured',
                            'value'   => 'yes',
                            'compare' => 'NOT LIKE',
                        ),
                    ),  
                ); 

При добавлении вещи 'meta_query', которую предлагали другие, кажется, что страница останавливается отображение результатов все вместе.

Есть идеи, как правильно написать это и, возможно, предложить дополнительные альтернативные решения?

Спасибо.

Ответы [ 2 ]

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

Другой способ заключается в том, что вы можете использовать 'post__not_in' => array (//post ids you want to exclude) в вашем wp_query

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

Проверено, работает хорошо. просто замените 'compare' => 'NOT LIKE' на 'compare' => 'NOT EXISTS'. Надеюсь, это поможет вам.

// args
$args = array(
    'numberposts'   => 3,
    'post_type'     => 'post',
    'meta_query' => array(
        array(
            'key'     => 'featured',
            'value'   => 'yes',
            'compare' => 'NOT EXISTS',
        ),
    ),
);

// query
$the_query = new WP_Query( $args );

 if( $the_query->have_posts() ):
 while( $the_query->have_posts() ) : $the_query->the_post();
    echo the_title(); 
 endwhile;
 endif;

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