@PRIZRAKeee

Как вывести конкретную категорию с подкатегорями и записями подкатегорий?

На странице должна выводиться определённая категория. Из этой категории должны выводиться все подкатегории. А у подкатегорий должны выводиться записи.
Структура следующая:
Категория
---Подкатегория (Заголовок)
------ Запись (миниатюра и заголовок)
------ Запись (миниатюра и заголовок)
------ Запись (миниатюра и заголовок)
------ Запись (миниатюра и заголовок)
---Подкатегория (Заголовок)
------ Запись (миниатюра и заголовок)
------ Запись (миниатюра и заголовок)
------ Запись (миниатюра и заголовок)
------ Запись (миниатюра и заголовок)
---Подкатегория (Заголовок)
------ Запись (миниатюра и заголовок)
------ Запись (миниатюра и заголовок)
------ Запись (миниатюра и заголовок)
------ Запись (миниатюра и заголовок)
Буду признателен, если поможете найти подходящий код или плагин для реализации этой идеи.
  • Вопрос задан
  • 214 просмотров
Решения вопроса 1
Rozumno
@Rozumno
Разработка сайтов на WordPres "под ключ".
1. Позвольте вставлять php-код на страницах сайта.
Для этого добавьте нижеприведенный код в файл functions.php.

Внимание: это небезопасно!
Любой имеющий доступ к записям и страницам сайта сможет вставить php-код.

function exec_php($matches){
    eval('ob_start();'.$matches[1].'$inline_execute_output = ob_get_contents();ob_end_clean();');
    return $inline_execute_output;
}
function inline_php($content){
    $content = preg_replace_callback('/\[exec\]((.|\n)*?)\[\/exec\]/', 'exec_php', $content);
    $content = preg_replace('/\[exec off\]((.|\n)*?)\[\/exec\]/', '$1', $content);
    return $content;
}
add_filter('the_content', 'inline_php', 0);


2. Вставьте следующий код на страницу, где должны выводится название категории, названия ее подкатегорий, а также названия и миниатюры вложенных записей.

[exec]
$parent_id = 999;
echo '<h1>'. get_cat_name( 999 ) .'</h1>';

# получаем дочерние рубрики
$sub_cats = get_categories( array(
	'child_of' => $parent_id,
	'hide_empty' => 0
) );
if( $sub_cats ){
	foreach( $sub_cats as $cat ){
		echo '<h2>'. $cat->name .'</h2>';

		# получаем записи из рубрики
		$myposts = get_posts( array(
			'numberposts' => -1,
			'category'    => $cat->cat_ID,
			'orderby'     => 'post_date',
			'order'       => 'DESC',
		) );

		# выводим записи
		global $post;
		foreach($myposts as $post){
			setup_postdata($post);
			echo '<li><h3>'. get_the_title() .'</h3>'.the_post_thumbnail().'</li>';
		}
		wp_reset_postdata();
	}
}
[/exec]


Где:
999 - id родительской рубрики. Замените это значение на нужное.

Примечание:
PHP-код будет выполняться между [exec] ... [/exec].
Не нужно вставлять <?php ... ?>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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