Отображение подкатегорий в WordPress

#wordpress #categories

#wordpress #Категории

Вопрос:

Приведенный ниже код отображает изображения родительских категорий могу ли я отображать подкатегории под изображением родительской категории

 <?php $cat = get_query_var('cat');
$args=array('term_args'=>array('child_of'=>$cat,'hide_empty'=>0,'orderby'=>'id'));
$terms = apply_filters( 'taxonomy-images-get-terms','',$args );
if ( ! empty( $terms ) ) {
foreach ( (array) $terms as $term ) {
   echo $this_category;
   ?>
<li class="col-md-3">
 <a href="<?php echo $term->name; ?>"><?php echo wp_get_attachment_image( $term->image_id, 'detail' ) ?></a>
</li>
<?php
}
}
 ?>
  

Ответ №1:

Я создал две пользовательские функции для получения родительских дочерних категорий в моем проекте. Создайте файл с именем project-helper.php и перейти к functions.php , наконец, добавьте свой созданный project-helper.php файл для functions.php

 //functions.php
require 'project-helper.php';
  

// project-helper.php

 /**
 * Get Category
 * @param $taxonomy
 * @param string $order
 * @return array
 */
function getPostTermCategory($taxonomy, $order = 'asc')
{
    $term_query = new WP_Term_Query([
        'taxonomy' => $taxonomy,
        'order' => $order,
        'hide_empty' => false,
        'parent' => 0
    ]);
    $categories = [];
    foreach ($term_query->terms as $term) {
        $categories[] = $term;
    }
    return $categories;
}

/**
 * Get Child Categories of Parent
 * @param $taxonomy
 * @param $parentId
 * @param string $order
 * @return array
 */
function getPostTermChildCategory($taxonomy, $parentId, $order = 'asc')
{
    $term_query = new WP_Term_Query([
        'taxonomy' => $taxonomy,
        'order' => $order,
        'hide_empty' => false,
        'parent' => $parentId
    ]);
    $categories = [];
    foreach ($term_query->terms as $term) {
        $categories[] = $term;
    }
    return $categories;
}
  

А теперь вызывайте созданные функции из вашего шаблона.

 $projectRegions = getPostTermCategory('project-region-cat');
foreach ($projectRegions as $projectRegion) {
                    
    <?php $categoryChild = getPostTermChildCategory('project-region-cat', $projectRegion->term_id);
        foreach ($categoryChild as $categoryChild) { ?>
        <option value="<?= $categoryChild->slug; ?>"><?= $categoryChild->name; ?></option>
    <?php } ?>
}
  

Я использовал опцию выбора html-тега. Вы можете делать что угодно со своим циклом
// Здесь project-region-cat является родительской категорией