scottb
  • 0
Гуру

После этого запроса все идентификаторы сообщений одинаковы, но rewind_posts() здесь не работает?

  • 0

Я выполняю запрос внутри header.php, который, по-видимому, сбрасывает объект $post, чтобы все страницы получали идентификатор $post->ID последнего элемента в этом цикле.

$mypostsheader = get_posts(array('cat' => "$cat,-$catHidden",'numberposts' => $cb2_current_count));
$current_page = get_post( $current_page );?>
<div class="menu top">
    <ul><?php foreach($mypostsheader as $idx=>$post){
        if ( $post->ID == $current_page->ID )//do something; }

Я пытался добавить rewind_posts() в конец этой функции, а также в конец header.php, но мой echo $post->ID внутри page.php по-прежнему возвращает идентификатор последнего элемента в запросе.

Есть идеи?

Share
  1. Вы уже сохраняете текущую страницу в $current_page. Почему бы просто не установить $post = $current_page; setup_postdata( $post ); после вашего цикла? Или есть еще что-то в вашем вопросе?

    • 0
    • @goldenapples: хорошее предложение. Я пропустил это. На самом деле я заставил его работать, используя wp_reset_query() непосредственно перед закрытием функции. Раньше я безуспешно пытался использовать rewind_posts().

      • 0
    • @goldenapples: Ваше предложение работает. Пожалуйста, опубликуйте это как ответ, и я проголосую за него и выберу его. На самом деле мне даже не нужно вызывать setup_postdata($post). Я просто сбрасываю сообщение с помощью $post = $current_page в соответствии с вашим предложением.

      • 0
  2. Я обнаружил, что одним из решений для этого было поместить вызов wp_reset_query() непосредственно перед закрытием вызова функции. Я пытался использовать rewind_posts(), но это не сработало. wp_reset_query() сделал свое дело.

    После этого, благодаря прекрасному наблюдению @goldenapples, что я уже устанавливал указатель на текущий объект $post с моей переменной $current_page (да!), я обнаружил, что могу сбросить вызов wp_reset_query() и вместо этого просто добавить эту строку на своем месте…

    $post = $current_page;
    

    Основная причина в том, что я сбрасывал объект $post в цикле for (как $idx=>$post), и запрос должен был быть сброшен, чтобы значение $post было истинным отражением текущего объекта $post для страница в вызовах функций ниже header.php

    • 0

Оставить ответ

You must login to add an answer.