Здравствуйте! И 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, судя по документации, проходит по всем элементам массива, то первый пост должен быть пропущен, а остальные выведены. Но почему-то это работает не так. В чем у меня ошибка?)