2015-05-21 5 views
3

Я создаю шаблон wp на основе 2013 года. Я хочу отобразить «страницу», содержащую некоторый контент со страницы, а затем 6 сообщений на нем. Эти сообщения были выбраны с помощью панели параметров тем, используя настройки api. Таким образом, я могу получить на каждом из них, используя $options = get_option('osc_theme_options'); Шаблон, который я использовал до сих пор, основан на странице, поэтому я предполагаю, что мне нужно каким-то образом изменить цикл.wordpress комментировать страницу и сообщения

Цикл идет:

<?php /* The loop */ ?> 
      <?php while (have_posts()) : the_post(); ?> 

       <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>... 

Я хочу знать, как изменить цикл так, что он тянет только посты, которые были выбраны. На данный момент этот шаблон/цикл только тянет на страницу, что, я думаю, достаточно справедливо.

Можно ли создать «другой цикл», возможно, под первым, который затем вводит выбранные сообщения - если да, то как?

Большое спасибо

ответ

1

Да, вы можете эффективно создать еще один цикл при существующем цикле для отображения сообщения. Я не уверен, что $options = get_option('osc_theme_options'); возвращается, т.е. массив и т.д. идентификатор сообщения для того, чтобы показать сообщения вам нужно сделать пользовательский цикл:

// The Query 
$the_query = new WP_Query($args); 

// The Loop 
if ($the_query->have_posts()) 
{ 
    echo '<ul>'; 
    while ($the_query->have_posts()) 
    { 
    $the_query->the_post(); 
    echo '<li>' . get_the_title() . '</li>'; 
    } 

    echo '</ul>'; 
} 
else 
{ 
    // no posts found 
} 
/* Restore original Post Data */ 
wp_reset_postdata(); 

Это взято из:

https://css-tricks.com/snippets/wordpress/custom-loop-based-on-custom-fields/

Смотрите также следующее:

https://digwp.com/2011/05/loops/

http://www.smashingmagazine.com/2013/01/14/using-wp_query-wordpress/

Так эффективно все это сводится к переменной $args относительно того, какие сообщения вы получите. Вот пример нескольких ids

id=2,6,17,38 

Итак, если $options = get_option('osc_theme_options'); возвращает массив почтовых идентификаторов, как так:

array(
     0=>1 
     1=>22 
     2=>27 
) 

Вы могли бы сделать что-то вроде:

$args = "id=".implode($options,","); 

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

+0

спасибо - это действительно полезный указатель. После немного экспериментирования он работает! – maxelcat

Смежные вопросы