Отображение записей WP_Query из той же категории, что и текущая запись

21 сент. 2016 г., 17:55:31
Просмотры: 24.5K
Голосов: 2

На странице записи я пытаюсь отобразить список других записей из той же категории, что и исходная запись. Пока что у меня есть следующий код, но он не работает:

<?php

    $args = array(
        'post_type' => 'article',
        'posts_per_page' => 5,
        'post__not_in' => array( get_the_ID() ),
        'category'     => array( get_the_category() ),
        'meta_query' => array(
                    array(
                    'key' => 'recommended_article',
                    'value' => '1',
                    'compare' => '=='
                        )
                    )
    );
    $query = new WP_Query( $args );

?>

    <?php if( $query->have_posts() ) : while( $query->have_posts() ) : $query->the_post(); ?>

<a class="popup-article-picture" href="<?php the_permalink(); ?>" style="background-image: url('<?php the_post_thumbnail_url(); ?>');"></a>
<a class="popup-article-title" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>

    <?php endwhile; endif; wp_reset_postdata(); ?>
12
Комментарии

Это находится внутри цикла для основного поста? Встроенная таксономия category прикреплена к вашему пользовательскому типу записи? Есть ли статьи в той же категории с мета-значением recommended_article == 1? Когда вы говорите, что это не работает, что вы ожидаете увидеть и как определяете, что это работает не так, как должно?

Andy Macaulay-Brook Andy Macaulay-Brook
21 сент. 2016 г. 17:59:26

@Andy Этот цикл находится внутри шаблона страницы для пользовательского типа записи article. recommended_article == 1 позволяет мне фильтровать посты, которые я отмечаю как рекомендуемые с помощью true/false из ACF.

ERDFX ERDFX
21 сент. 2016 г. 18:05:37

Информации недостаточно, чтобы помочь вам. Можете показать больше из соответствующего файла шаблона? Можете показать, где вы прикрепили Категории к CPT article?

Andy Macaulay-Brook Andy Macaulay-Brook
21 сент. 2016 г. 18:08:22

@Andy, я использовал плагин Custom Post Types UI для создания пользовательского типа записей и привязки его к существующим категориям WP. Цикл находится внутри файла single-article.php в моем шаблоне. Я совсем новичок в PHP и WordPress, так что больше ничего внятного сказать не могу.

ERDFX ERDFX
21 сент. 2016 г. 18:12:08

Спасибо - просто исключаю возможные базовые проблемы. Думаю, нам нужно увидеть весь шаблон, если ты можешь отредактировать свой вопрос и включить его.

Andy Macaulay-Brook Andy Macaulay-Brook
21 сент. 2016 г. 18:13:35

@AndyMacaulay-Brook как ты хочешь, чтобы я его показал? Весь шаблон довольно большой. И тебе нужно только single-article.php?

ERDFX ERDFX
21 сент. 2016 г. 20:15:37

Этот файл является шаблоном, так что да, но возможно и любые файлы, которые он включает. Я могу отредактировать вопрос, чтобы убрать нерелевантные части и сделать его короче.

Andy Macaulay-Brook Andy Macaulay-Brook
21 сент. 2016 г. 20:17:17

@Andy ссылка Я включил functions.php, но не думаю, что там есть что-то важное

ERDFX ERDFX
21 сент. 2016 г. 20:23:39

Спасибо - правильно ли я понимаю, что основной материал статьи не отображается? Например, где вы использовали the_title(), ничего не происходит? Могу я увидеть header.php?

Andy Macaulay-Brook Andy Macaulay-Brook
21 сент. 2016 г. 21:09:20

@Andy Вот решение ссылка. Нет, все остальное до проблемы с категориями работает у меня идеально.

ERDFX ERDFX
21 сент. 2016 г. 21:24:22

@Andy Я сам нашел решение. Спасибо, что пытался помочь!

ERDFX ERDFX
21 сент. 2016 г. 23:30:59

Отлично! Без проблем. Напиши свое решение в качестве ответа и отметь его как правильный. Это поможет поддерживать порядок на сайте.

Andy Macaulay-Brook Andy Macaulay-Brook
21 сент. 2016 г. 23:33:22
Показать остальные 7 комментариев
Все ответы на вопрос 2
1

Я нашел ответ:

<?php

    // Получаем категории текущего поста
    $cats = get_the_category();
    // Аргументы для WP_Query
    $args = array(
        'post_type' => 'article', // Тип поста - article
        'post__not_in' => array( get_the_ID() ), // Исключаем текущий пост
        'posts_per_page' => 5, // Количество постов
        'cat'     => $cats[0]->term_id, // ID первой категории текущего поста
        'meta_query' => array( // Мета-запрос
                    array(
                    'key' => 'recommended_article', // Ключ метаполя
                    'value' => '1', // Значение метаполя
                    'compare' => '==' // Оператор сравнения
                        )
                    )
    );
    // Создаем новый запрос
    $query = new WP_Query( $args );

?>  

<?php if( $query->have_posts() ) : while( $query->have_posts() ) : $query->the_post(); ?>   

<!--HTML-->

<?php endwhile; endif; wp_reset_postdata(); ?>
21 сент. 2016 г. 23:17:14
Комментарии

сейчас не работает :(

Shiv Singh Shiv Singh
15 мар. 2019 г. 11:34:02
1

Вы пытаетесь выполнить запрос к пользовательскому типу записи с названием article. Используете ли вы стандартные категории WordPress для этого типа записи article? Или вы зарегистрировали какую-либо пользовательскую таксономию для этого типа записи? Предполагаю, что вы используете стандартные категории WordPress для CPT (пользовательского типа записи).

Первый шаг — получить текущую категорию на странице записи. Следующая функция вернет категории, связанные с записью, вне основного цикла:

get_the_category();

Она вернет массив объектов терминов. Из этого массива нужно получить slug (ярлык), чтобы передать его в запрос. Допустим, у нас только одна категория назначена для отдельной записи.

$category_obj = get_the_category();
$category = $category_obj[0]->slug;

Теперь вы можете использовать это в запросе для получения связанных записей:

$args = array(
        'post_type' => 'article',
        'posts_per_page' => 5,
        'category'     => $category,
        'meta_query' => array(
                    array(
                    'key' => 'recommended_article',
                    'value' => '1',
                    'compare' => '=='
                        )
                    )
    );
    $query = new WP_Query( $args );

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

21 сент. 2016 г. 20:47:48
Комментарии

Не могли бы вы объяснить, что именно нужно сделать с этим фрагментом кода? Простое добавление его в шаблон не сработало для меня. Спасибо!

ERDFX ERDFX
21 сент. 2016 г. 21:19:54