Для вывода постов разных категорий внутри цикла foreach
в WordPress, вам понадобится использовать функцию get_posts()
, чтобы получить посты из каждой категории, а затем отобразить их на странице.
Вот пример кода, который поможет вам решить эту задачу:
// Получить список всех категорий $categories = get_categories(); // Проход по каждой категории foreach ($categories as $category) { // Получение ID категории $category_id = $category->cat_ID; // Получение постов из текущей категории $args = array( 'category' => $category_id, 'posts_per_page' => -1 // Получение всех постов из категории ); $posts = get_posts($args); // Проверка, есть ли посты в текущей категории if ($posts) { // Вывод заголовка категории echo '<h2>' . $category->name . '</h2>'; // Вывод каждого поста в текущей категории foreach ($posts as $post) { setup_postdata($post); // Вывод заголовка и контента поста echo '<h3>' . get_the_title() . '</h3>'; echo '<div>' . get_the_content() . '</div>'; } // Сброс данных о посте wp_reset_postdata(); } }
В этом коде мы используем функцию get_categories()
для получения списка всех категорий. Затем мы проходимся по каждой категории с помощью цикла foreach
. Внутри цикла мы получаем ID категории и используем его для создания аргументов (параметров) для функции get_posts()
. Здесь мы указываем категорию и количество постов, которые хотим получить. Затем мы вызываем функцию get_posts()
, чтобы получить список постов из текущей категории.
Если в текущей категории есть посты, мы выводим заголовок категории с помощью свойства name
объекта категории и выводим каждый пост с помощью функций get_the_title()
и get_the_content()
. Важно также вызвать функцию setup_postdata($post)
, чтобы установить данные о текущем посте.
Наконец, после завершения цикла мы вызываем функцию wp_reset_postdata()
, чтобы сбросить данные о последнем полученном посте.
Надеюсь, данное решение поможет вам вывести посты разных категорий внутри цикла foreach
в WordPress.