aPilot
@aPilot

Почему не работает exclude (исключение страниц в wordpress)?

У меня подгружались похожие записи. Я добавил ещё и страницы.

'post_type' => array('post','page')

Стали выводиться все страницы в том числе и ненужные, такие как "контакты" и прочее.
Я добавил 'exclude' => '12,14,21,23', но никакого толку они так же подгружаются, не исключаются.

В чём ошибка? почему не работает exclude?

add_action('wp_ajax_get_related_posts', 'get_related_posts');
add_action('wp_ajax_nopriv_get_related_posts', 'get_related_posts');
function get_related_posts() {
    $post__not_in = $_POST['post__not_in'];
    $category__in = $_POST['category__in'];
    $args = array('post__not_in' => $post__not_in, 'category__in' => $category__in, 'posts_per_page' => 3, 
'post_status' => 'publish', 'orderby' => 'rand', 
'post_type' => array('post','page'), 'exclude'  => '12,14,21,23');
    $query = new WP_Query($args);
    if ($query->have_posts()) : ?>
        <div class="related-posts-block clearfix">
            <?php
            while ($query->have_posts()) : $query->the_post(); ?>
                <div class="related-post" data-post-id="<?php the_ID(); ?>">
                    <a href="<?php the_permalink(); ?>" target="_blank">
                        <?php if (has_post_thumbnail()) {
                            the_post_thumbnail('s320x160');
                        } else { ?>
                            <img src="//placehold.it/250x125">
                            <?php
                        } ?>
                        <div class="related-post-title">
                            <span><?php the_title(); ?></span>
                        </div>
                    </a>
                </div>
                <?php
            endwhile;
            wp_reset_postdata(); ?>
        </div>
        <?php
    endif;
    die();
}
  • Вопрос задан
  • 465 просмотров
Пригласить эксперта
Ответы на вопрос 2
deniscopro
@deniscopro Куратор тега WordPress
WordPress-разработчик, denisco.pro
А так?
$offset = $_POST['offset'];
$args = array(
'post__not_in' => array('12', '14', '21', '23'), 
'category__in' => $category__in,
'posts_per_page' => 3, 
'post_status' => 'publish',
'post_type' => array('post', 'page'),
'offset' => $offset
);
$query = new WP_Query($args);


P.S. А зачем загружаете через AJAX?
Ответ написан
arizona
@arizona
а что я, собственно, здесь делаю?...
Странно, exclude советуют передавать массивом... https://developer.wordpress.org/reference/function...

У вас кроме exclude используется еще и post__not_in. Попробуйте их объединить (цитата из страницы выше по ссылке)
$r['post__not_in'] = wp_parse_id_list( $r['exclude'] );
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы