WordPress как на ладони
Шаблоны, плагины и темы для настоящих поклонников Elementor. От TemplateMonster.com wordpress jino

Как дописать if-else для вывода(постов-рубрик) ?

Подскажите, как сделать так, чтобы если есть в рубрике подрубрики - выводились ТОЛЬКО ОНИ(1-я часть кода), а если подрубрик нету(сейчас так и работает) - Выводятся только посты. Сейчас выводятся и подрубрики и посты, если есть в данной рубрике и то и другое...

<div class="row">
		<!-- Код для вывода подкатегорий в категориях -->
<?php
	if (count(get_categories('child_of='.$cat))) 
	if (is_category()) {
	$current_cat=get_query_var('cat');

	$args = array(
		'type'   => 'post',
		'show_option_all'    => '',
		'show_option_none'   => __('No categories'),
		'orderby'            => 'post_date',
		'order'              => 'DESC',
		'show_last_update'   => 0,
		'style'              => 'list',
		'show_count'         => 0,
		'hide_empty'         => 0,
		'use_desc_for_title' => 1,
		'child_of'           => $current_cat,
		'feed'               => '',
		'feed_type'          => '',
		'feed_image'         => '',
		'exclude'            => '',
		'exclude_tree'       => '',
		'include'            => '',
		'hierarchical'       => true,
		'title_li'           => '',
		'number'             => NULL,
		'echo'               => 1,
		'depth'              => 0,
		'current_category'   => 0,
		'pad_counts'         => 0,
		'taxonomy'           => 'category',
		'walker'             => 'Walker_Category',
		'hide_title_if_empty' => false,
		'separator'          => '<br />',
	);

?>
<?php

	foreach (get_categories($args) as $category) {
		$category_link = get_category_link( $category );
			  ?>
				<div class="col-md-6">
					<div class="catalog-block">
						<a href="<?php echo $category_link; ?>" class="catalog-title"><h3><?php echo $category->name; ?></h3></a>
						<a href="<?php echo $category_link; ?>" class="catalog-title"><?php if($imgcat1=get_field("imgcat1",get_category($category))){?>
							<img src="<?php echo $imgcat1;?>" style="max-height: 320px" />
							<?php }?>
						</a>
						<a href="<?php echo $category_link; ?>" class="btn btn-tovar">Узнать подробнее о товаре</a>
					</div>    
				</div>                                    
		<?php
	}                       

	//echo '<ul class="forchild">';
		//wp_list_categories( $args );
	//echo '</ul>';           
	}
	wp_reset_postdata(); // сброс
?>

		<!-- Код для вывода постов в категории -->
	<?php
		// параметры по умолчанию
		$args = array(
			'numberposts' => 0,
			'category_name'    => $cat_slug,
			'orderby'     => 'parent',
			'order'       => 'DESC',
			'include'     => array(),
			'exclude'     => array(),
			'meta_key'    => '',
			'meta_value'  =>'',
			'post_type'   => 'post',
			'suppress_filters' => true, // подавление работы фильтров изменения SQL запроса
		);

		$posts = get_posts( $args );

		foreach($posts as $post){ setup_postdata($post);
			?>
				<div class="col-md-6">
					<div class="catalog-block">
						<a href="<?php the_permalink(); ?>" class="catalog-title"><h3><?php the_title(); ?></h3></a>
						<a href="<?php the_permalink(); ?>" class="catalog-title"><?php the_post_thumbnail('object-preview'); ?>
						</a>
						<a href="<?php the_permalink(); ?>" class="btn btn-tovar">Узнать подробнее о товаре</a>
					</div>    
				</div>
			<?php
		}

		wp_reset_postdata(); // сброс                       
	?>                               

</div>
0
4 месяца назад
  • 1

    Это проверка на подрубрики

    if (count(get_categories('child_of='.$cat))) вот тебе и иф

    А вообще для такого я бы другим кодом пользовался и выводил бы что то типо того:

    В данном примере каждый $cat из цикла foreach ($cats as $cat), может содержать такую информацию:

    [term_id] => 162
    [name] => Здоровье
    [slug] => zdorove
    [term_group] => 0
    [term_taxonomy_id] => 170
    [taxonomy] => articles
    [description] =>
    [parent] => 0 2

    $cats = get_terms( 'category' );
    
    foreach ($cats as $cat){
    
    	if ($cat->parent){ 
    		//тут если подрубрика
    		echo 'Имя: '.$cat->name.'<br>';
    		echo 'Ссылка: '.get_term_link($cat->term_id).'<br>';
    	}else{
    		//нет продрубрик, главная категория
    	}
    
    }

    Код может быть не рабочий, просто для примера

    читай про get_terms https://wp-kama.ru/function/get_terms там много примеров

    Вот тоже по теме:

    https://wp-kama.ru/function/get_ancestors

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация