2015-10-20 4 views
0

Я новичок в Wordpress и хотел бы создать цикл, который будет отображать заголовки сообщений (только из одной категории) в левом div и содержимое тех же сообщений в правом div , Это то, что я сделал, и мне интересно, есть ли лучший способ сделать это (ну, наверное, есть)? Благодаря!WordPress loop, который перечисляет названия и содержимое отдельно

<div class="container"> 
<div class="post_title"> 
    <?php query_posts('cat=6'); ?> 
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?> 
    <h3><?php the_title(); ?></h3> 
    <?php endwhile; endif; ?> 
    <?php rewind_posts(); ?> 
</div>   
<div class="post_content"> 
    <?php query_posts('cat=6'); ?> 
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?> 
    <?php the_content(); ?> 
    <?php endwhile; endif; ?> 
    <?php wp_reset_query(); ?> 
</div>            

+1

** НИКОГДА НИКОГДА ** не используйте 'query_posts'. Он медленный, прерывает основной запрос и ломает функциональность страницы. Вы можете делать все в ** одном ** запросе. Я сделал что-то вроде этого пару месяцев назад, хотя я не могу вспомнить, где. –

ответ

0

Используйте get_posts вместо: https://codex.wordpress.org/Template_Tags/get_posts

$output1 = ''; 
$output2 = ''; 
$args = array('cat'=> 6); 
$allposts = get_posts($args); 
foreach ($allposts as $post) : 
    setup_postdata($post); 
    // Store the titles in one variable 
    $output1 .= '<h3>'.get_the_title().'</h3>'; 
    // And the content in another 
    $output2 .= wpautop(get_the_content()); 
endforeach; 
wp_reset_query(); 

Тогда эхо из $ output1 и $ output2, где они необходимы - можно даже хранить их как массивы, если вы хотите большего контроля. Вы можете добавить параметры в массив $ args, чтобы изменить порядок и т. Д., Как вы пожелаете.

+0

Спасибо! Это полезно! – Marko86

+0

Рад, что это помогает - дайте мне знать, если вам нужна дальнейшая помощь. Изучение функции get_posts поможет вам в разработке WordPress. Кодекс WordPress - ваш друг :) –

0

Это не хорошо, и тот же код запустить два раза, вы можете использовать get_the_title(), get_post(), get_the_content() вместо того, чтобы в одном цикле, они возвращают строку, а не выходной строки сразу.

+0

Спасибо! Проблема в том, что в одном цикле я получаю результат в этом порядке - заголовок, контент, заголовок, контент, и мне нужен заголовок, заголовок, контент, контент. Мне нужны списки, один из которых содержит названия и другие сведения о содержании – Marko86