Задать вопрос
@alekamisleforma

Как в WordPress вывести все посты, кроме первого?

Здравствуйте! И PHP, и WordPress знаю пока неважно и осваиваю их параллельно. В гугле ответ на вопрос найти не удалось, поэтому надеюсь на вашу помощь)

Есть функция, которая получает массив записей типа 'services'. Записана, как и положено, в functions.php:
function getFaq(){
		$args = array(
			'orderby'     => 'date',
			'order'       => 'ASC',
			'post_type'   => 'services',
		);
		return get_posts( $args );
	}


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

Вот так реализован вывод только первого поста. Достигается это за счет break в конце. Работает нормально:
spoiler
<div class="twelve columns">
          <?php foreach(getFaq() as $post): ?>
        		<h1><?php echo $post->post_title; ?><span>.</span></h1>

  	         <hr />      	         

  	         <p><?php echo $post->post_content; ?></p>
          <?php break; endforeach; ?>
	      </div>


А вот второе место, где и возникают трудности:
<?php foreach(getFaq() as $post): ?>
	      	    <div class="bgrid">	               
        
                <h3><?php echo $post->post_title; ?></h3>
                <div class="service-content"> 
                  <p><?php echo $post->post_content; ?></p>
                </div> 

              </div> 
            <?php  endforeach; ?>


В коде выше выводятся вообще все посты, включая первый. Была попытка убрать первый пост при помощи условия, но не срабатывает так, как задумано:
<?php foreach(getFaq() as $post):
            if(!getFaq()[0]){ ?>
	      	    <div class="bgrid">	               
        
                <h3><?php echo $post->post_title; ?></h3>
                <div class="service-content"> 
                  <p><?php echo $post->post_content; ?></p>
                </div> 

              </div> 
            <?php } endforeach; ?>


Если писанину перевести на человеческий язык, то задумка была такая- "Если НЕ первый элемент массива ($args[0], т.к. именно массив $args функция и возвращает), то срабатывает код в скобках". И т.к. цикл foreach, судя по документации, проходит по всем элементам массива, то первый пост должен быть пропущен, а остальные выведены. Но почему-то это работает не так. В чем у меня ошибка?)
  • Вопрос задан
  • 1794 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
Пригласить эксперта
Ваш ответ на вопрос

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

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