2014-12-17 3 views
0

Я строю свою собственную тему. У меня есть страница для моего блога (с шаблоном, который я создал), который я хотел бы просто отобразить несколько моих сообщений. Он использует следующий цикл:Неправильный вывод заголовка из цикла wordpress

<?php 
    query_posts('post_type=post'); 
    if (have_posts()) { 
     while (have_posts()) { 
?> 

<div class="blog_post"> 
    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> 
    <div class="entry_date"><?php the_time('F jS, Y') ?></div> 
    <?php 
     the_post(); 
     the_content(); 
    ?> 
</div> 

<?php 
     } 
    } 
?> 

Названия моих постов являются «Начать, второе сообщение, третье сообщение, и четвертое сообщение» соответственно. Когда сообщения отображаются на странице блога, они отображаются в правильном порядке, но заголовки сообщений неверны. Название первого сообщения гласит: «Вторая почта». Название второй должности: «Третья почта» и т. Д. До последнего (последнего) сообщения, которое имеет название: «Блог» (название страницы). Что случилось с названиями, которые они так напортачили?

Что я пробовал: Я исследовал это задолго до того, как пришел сюда. Я попытался использовать get_the_title() вместо этого, но это не приводит к отображению заголовков. Я также попытался использовать the_title_attribute() безрезультатно. Я также понимаю, что я не должен использовать query_post для этого цикла, но я не уверен, какой правильный метод использовать для получения сообщений в этом конкретном случае. Большая часть информации, которую я прочитал, была неясной, хотя и, похоже, не устранила проблему.

Любая помощь очень ценится.

ответ

0

Хорошо Nevermind! Я только выяснил, в чем проблема. Я переехал, «the_post()» только после того, как петля, а так что теперь он звучит так:

<?php 
     query_posts('post_type=post'); 
     if (have_posts()) { 
      while (have_posts()) { 
       the_post(); 
       ?> 
       <div class="blog_post"> 
        <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> 
        <div class="entry_date"><?php the_time('F jS, Y') ?></div> 
        <?php 
        the_content(); 
        ?> 
       </div> 
       <?php 
      } 
     } 
     ?> 

Я нашел это решение, пока я читал о the_post() в WordPress Codex. Оказывается, эта функция настраивает информацию для следующего сообщения в строке, поэтому его не следует смешивать с выходом html для текущего сообщения.

Что касается того, следует ли использовать «query_posts()», я все еще не уверен и не желаю советовать. Но цикл в текущей форме работает.

0

попробовать что-то вроде этого: непроверенных

<?php 
global $post; 
$args = array(); 
$myposts = get_posts($args); 
foreach($myposts as $post) : 
    setup_postdata($post); ?> 
    YOUR HTML HERE 
<?php endforeach; 
wp_reset_postdata(); ?> 
Смежные вопросы