Получить заголовок WordPress без the_post - PullRequest
0 голосов
/ 22 марта 2019

Мне нужно перебрать ряд постов перед основным содержанием в шаблоне страницы. Это просто:

$getCoverArticles = array(
    'tax_query' => array(
        array(
            'taxonomy' => 'post_tag',
            'field'    => 'slug',
            'terms'    => 'cover',
        ),
    )
);

$queryCoverArticles = new WP_Query( $getCoverArticles );

if($queryCoverArticles->have_posts() ) {
  while($queryCoverArticles->have_posts() ) {
    $queryCoverArticles->the_post();
    ?>
        <a><?php the_title(); ?></a>
    <?php
  }
}

Проблема в том, что метод устанавливает глобальный объект post, поэтому попытка получить the_content() после того, как этот цикл выдаст содержимое для последнего сообщения в цикле ...

Кажется немного экстремальным, чтобы манипулировать глобальным объектом post только для свойства title. Есть ли способ легко получить название, не назначая его в качестве глобального объекта?

Ответы [ 3 ]

2 голосов
/ 22 марта 2019

С документация :

Примечание: Если вы используете the_post () с вашим запросом, вам нужно запустить wp_reset_postdata () , чтобы иметь Теги шаблона используйте текущую запись основного запроса снова.

Итак:

if($queryCoverArticles->have_posts() ) {
  while($queryCoverArticles->have_posts() ) {
    $queryCoverArticles->the_post();
    ?>
        <a><?php the_title(); ?></a>
    <?php
  }
}

// Restore original post data
wp_reset_postdata();

... должен исправить проблему.

1 голос
/ 22 марта 2019

Добавьте wp_reset_postdata(); сразу после того, как вы закончите с дополнительным запросом, и запрос должен быть восстановлен, чтобы глобальная $ post ссылалась на текущую запись в основном запросе.

0 голосов
/ 22 марта 2019

Пожалуйста, попробуйте следующий код, я надеюсь, что это будет работать для вас.

<?php

if ($queryCoverArticles->have_posts() ) :
    while ( $queryCoverArticles->have_posts() ) : $queryCoverArticles->the_post();
        ?><a href="<?php the_permalink() ?>"><?php the_title() ?></a><br /><?php
    endwhile;
endif;
wp_reset_postdata();
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...