2013-03-10 2 views
0

Привет У меня есть цикл с рекомендациями, используя расширенные настраиваемые поля. Мне нужен цикл, чтобы зацикливать только одно сообщение в случайном порядке, я попробовал query_posts, но его выполнил работу.Ограничительные посты в цикле

<?php 
       query_posts('posts_per_page=1&orderby=rand'); 
      if(get_field('testimonials', 'options')): ?> 

       <?php while(has_sub_field('testimonials', 'options')): ?> 

        <ul> 
         <li class="title"><?php the_sub_field('name'); ?></li> 
         <li class="site"><a href="<?php the_sub_field('website'); ?>" target="_blank"><?php the_sub_field('website'); ?></a></li> 
         <li class="desc"><?php the_sub_field('message'); ?></li> 
        </ul> 

       <?php endwhile; ?> 

      <?php endif; ?> 
+2

Вы пробовали http://wordpress.stackexchange.com/? – Prix

+0

Вы while loop не используете объект query_posts из того, что я вижу? Читайте о WP_Query: https://codex.wordpress.org/Class_Reference/WP_Query - он имеет гораздо больше параметров фильтрации. –

+0

Вы можете просто «ломать» из цикла while – Popnoodles

ответ

0

Я нашел решение здесь :) http://www.advancedcustomfields.com/resources/how-to/how-to-query-posts-filtered-by-custom-field-values/

<?php 

// args 
$args = array(
    'numberposts' => -1, 
    'post_type' => 'event', 
    'meta_key' => 'location', 
    'meta_value' => 'Melbourne' 
); 

// get results 
$the_query = new WP_Query($args); 

// The Loop 
?> 
<?php if($the_query->have_posts()): ?> 
    <ul> 
    <?php while ($the_query->have_posts()) : $the_query->the_post(); ?> 
     <li> 
      <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 
     </li> 
    <?php endwhile; ?> 
    </ul> 
<?php endif; ?> 

<?php wp_reset_query(); // Restore global post data stomped by the_post(). ?> 
1

Там проблема с циклом в то время, вы должны сделать это следующим образом:

<?php 
    $posts = new WP_Query(); 
    $posts->query('posts_per_page=1&orderby=rand'); 

    if (have_posts()) : 
     while (posts->have_posts()) : $posts->the_post(); 
      if(get_field('testimonials', 'options')): //Ain't no sure what does this ?> 
      <ul> 
       <li class="title"><?php the_sub_field('title'); ?></li> 
       <li class="site"><a href="<?php the_sub_field('website'); ?>" target="_blank"> 
       <?php the_sub_field('website'); ?></a></li> 
       <li class="desc"><?php the_sub_field('message'); ?></li> 
    </ul> 
<?php 
      endif; 
     break; // Exit loop after first post 
    endwhile; 
endif; 
?> 

Посмотрите, как я использую время цикла. Я не понимаю, что делает get_field, вам следует передать идентификатор сообщения в качестве второго параметра.

+0

'get_field' и' has_sub_field' являются настраиваемыми функциями, которые создаются расширенными настраиваемыми плагинами полей для wordpress, они не являются родными для WP, вкратце они используют 'get_field' для возврата значение определенного поля, более того, вы не должны использовать 'query_posts' вместо использования' WP_Query' –

+0

спасибо за информацию, я обновил код WP_Query – Skatox

+0

, который почему-то не работает – mariovass

0

Попробуйте для выпетливании один пост на странице:

$args = array(
    'posts_per_page' => 1, 
    'orderby' => 'rand' 
    ); 
$the_query = new WP_Query($args); 


while ($the_query->have_posts()) : 
    $the_query->the_post(); 
    echo '<ul>'; 
    echo '<li>' . get_the_title() . '</li>'; 
    echo '</ul>'; 
    echo '<li class="title">'.the_sub_field('name'). '</li>'; 
    echo '<li class="site"><a href="'.the_sub_field('website').'" target="_blank">'.the_sub_field('website').'</a></li>'; 
    echo '<li class="desc">'.the_sub_field('message').'</li>'; 
endwhile; 


wp_reset_postdata(); 
Смежные вопросы