/ Wordpress / Ищем самого первого предка

Ищем самого первого предка

HIT

05.06.2016

1521

Нам нужно получить самого первого предка таксономии, независимо от количества потомков и в каком месте мы пытаемся его получить. Также найдем ближайшего предка с загруженным изображением (term_image).

Получаем первый родительский термин таксономии

Использовать данный код в шаблоне термина таксономии, или в виджете. Но работать он будет непосредственно при нахождении в каком-либо термине. В данном примере в таксономии — product_cat (категории woocommerce).

<?php $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
$tax = 'product_cat';
$top_parent_term = $child_term = $term->term_id; // ID дочернего термина

while( $temp = wp_get_term_taxonomy_parent_id( $top_parent_term, $tax ) ) {
$top_parent_term = $temp;
}

if( $top_parent_term != $child_term ) : ?>

<?php $toppartherm = get_term( $top_parent_term, $tax ); ?>

<a href="<?php echo get_tag_link($toppartherm->term_id); ?>">
<div class="podcat-line podcat-parent">

<div class="cat-image-min"><?php woocommerce_subcategory_thumbnail( $toppartherm ); ?></div>
<h2 class="podcat-line-title"><?php echo $toppartherm->name ?></h2>

</div>
</a>

<?php else: ?>

<?php endif; ?>

Получаем первый родительский термин у записи или товара

<?php $tax = 'product_cat';
$terms = get_the_terms( $post->ID, 'product_cat' ); ?>

<?php if( $terms ) : ?>
<?php foreach ($terms as $term) : ?>

<?php $top_parent_term = $child_term = $term->term_id; // ID дочернего термина

while( $temp = wp_get_term_taxonomy_parent_id( $top_parent_term, $tax ) ) {
$top_parent_term = $temp;
}


if( $top_parent_term != $child_term ) : ?>
 
<?php $toppartherm = get_term( $top_parent_term, $tax ); ?> 
 
<a href="<?php echo get_tag_link($toppartherm->term_id); ?>">
<?php woocommerce_subcategory_thumbnail( $toppartherm ); ?>
</a>
 
<?php else: ?>

<?php $toppartherm = get_term( $top_parent_term, $tax ); ?> 
<a href="<?php echo get_tag_link($top_parent_term); ?>">
<?php woocommerce_subcategory_thumbnail( $toppartherm ); ?>
</a>

<?php endif; ?> 



<?php endforeach; ?>
<?php else: ?>
нет категории 
<?php endif; ?>

Ищем ближайшего предка с изображением

Решение по добавлению изображения категориям используем это.

В шаблоне таксономии:

<div class="post-header" 
<?php if ( $category->term_image ): ?>
 
	style="background: url('<?php echo wp_get_attachment_image_url( $category->term_image, 'full' ); ?>'); background-size: cover; background-position: center;"
	
 <?php else: ?>
 
	<?php $temp = get_category( $category->parent );
	while( empty($temp->term_image) && $temp->parent != 0 ) {

		$temp = get_category( $temp->parent );

	} ?>
 
	style="background: url('<?php echo wp_get_attachment_image_url( $temp->term_image, 'full' ); ?>'); background-size: cover; background-position: center;"
 
<?php endif; ?>
></div>

В шаблоне записи:

<div class="post-header" 
<?php if( has_post_thumbnail() ): ?>

	style="background: url(<?php the_post_thumbnail_url(); ?>); background-size: cover; background-position: center;"
	
<?php else: ?>

	<?php  $post_category = get_the_category( $post->ID );
	if ( $post_category[0]->term_image ): ?>

		style="background: url('<?php echo wp_get_attachment_image_url( $post_category[0]->term_image, 'full' ); ?>'); background-size: cover; background-position: center;"

	<?php else: ?>

		<?php $temp = get_category( $post_category[0]->parent );
		while( empty($temp->term_image) && $temp->parent != 0 ) {

			$temp = get_category( $temp->parent );

		} ?>

		style="background: url('<?php echo wp_get_attachment_image_url( $temp->term_image, 'full' ); ?>'); background-size: cover; background-position: center;"

	<?php endif; ?>		 

<?php endif; ?>
><div>
[site-socialshare]
  • Комментарии
  • Вложения

Добавить комментарий

Пока нет комментариев. Будь первым!

Ищем самого первого предка
Настраиваем панель редактирования записей
Рекомендации для васНастраиваем панель редактирования записейOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.