Задать вопрос
@Rokis
Не стыдно спрашивать, стыдно не пытаться...

Как правильно написать цикл loop и get_field в wordpress?

Здравствуйте.

Требуется выводить цикл если есть произвольное поле и у меня не получается без ошибок его правильно написать.

Сам цикл без этой опции у меня выводится так:

<?php $populargb = new WP_Query('showposts=5&meta_key=views&orderby=meta_value_num&order=DESC' );
while ( $populargb->have_posts() ) {
    $populargb->the_post(); ?>
<div class="sidelist">
  <a class="sloy" href="<?php the_permalink() ?>"></a>
  <div class="sidetumb"><?php the_post_thumbnail('thumbnail'); ?></div>
<div class="sidemax"><a><?php the_title(); ?></a>
  <div class="icon-eye"><?php echo get_post_meta ($post->ID,'views',true); ?></div></div>
</div>
<?php } ?>
<?php wp_reset_query(); ?>


Я же пытаюсь сделать так, чтобы если есть произвольное поле "X", то вывод осуществляется как в примере (только само поле меняет параметр WP_Query). Если произвольного поля нет - то цикл вовсе не появляется.

Делаю я это с помощью if get_field (в этом примере он у меня остаётся таким же):

<?php if(get_field('X'))
    $populargb = new WP_Query('showposts='.get_field('X').'&orderby=date&order=DESC' );
        else  $populargb = new WP_Query('showposts=6&orderby=date&order=DESC' );  ?>


Я пробовал всячески, например так:

<?php if(get_field('X')) //если есть произвольное поле X
    $populargb = new WP_Query('showposts='.get_field('X').'&orderby=date&order=DESC' ); //присваиваем значение в WP_Query
while ( $populargb->have_posts() ) { //если есть посты
    $populargb->the_post();  //выведем их 
?>
<div class="sidelist">
  <a class="sloy" href="<?php the_permalink() ?>"></a>
  <div class="sidetumb"><?php the_post_thumbnail('thumbnail'); ?></div>
<div class="sidemax"><a><?php the_title(); ?></a>
  <div class="icon-eye"><?php echo get_post_meta ($post->ID,'views',true); ?></div></div>
</div>
<?php } ?>
<?php endwhile; //конец вывода 
?>
<?php endif; //конец условия if 
?> 
<?php wp_reset_query(); ?>


Но ещё как я понимаю нужно вписать else. Я пробовал много разных вариантов и итог всегда был 1 - белый экран. Также читал про циклы. Знаю, что не понимаю логику работы. Поэтому прошу исправить и объяснить мне её.
  • Вопрос задан
  • 357 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
deniscopro
@deniscopro Куратор тега WordPress
WordPress-разработчик, denisco.pro
Так уже пробовали?
<?php if(get_field('X')) {
    $populargb = new WP_Query('showposts='.get_field('X').'&orderby=date&order=DESC' );
}  else {
  $populargb = new WP_Query('showposts=6&orderby=date&order=DESC' ); 
} ?>

P.S. Белый экран означает, что произошла ошибка. Включите режим отладки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы