只显示所选类别的子类别-列表/作业管理器


Display only child of selected category - Listify/Job Manager

我试图在多选下拉菜单中显示$selected_category/s的子元素,并尝试了以下操作;

<?php job_manager_dropdown_categories( array( 'taxonomy' => 'job_listing_category', 'hierarchical' => 1, 'name' => 'search_categories',  'selected' => $selected_category, 'child_of' => $selected_category, 'orderby' => 'id','hide_empty' => true) ); ?>

您通过在主页上选择父类别到达下拉列表,移动到显示结果的此页面。我希望这个页面上的下拉菜单只显示所选类别/s的子类别(因为它目前显示所有类别的所有父母和孩子)以缩小结果。然而,尽管我使用的代码可以完美地在下拉列表中工作,但它删除了父类别和父类别的搜索结果,因此显示所有结果,直到您选择一个子类别,这不是理想的。

如何使父类别和结果保持不变,同时只显示所选父类别的子类别。

周围没有

的代码
    <?php elseif ( $show_categories && ! is_tax( 'job_listing_category' ) && get_terms( 'job_listing_category' ) ) : ?>
        <div class="search_categories">
            <label for="search_categories"><?php _e( 'Category', 'wp-job-manager' ); ?></label>
            <?php if ( $show_category_multiselect ) : ?>
                <?php job_manager_dropdown_categories( array( 'taxonomy' => 'job_listing_category', 'hierarchical' => 1, 'name' => 'search_categories',  'selected' => $selected_category,   'child_of' => $selected_category, 'orderby' => 'id','hide_empty' => true) ); ?>
            <?php else : ?>
                <?php job_manager_dropdown_categories( array( 'taxonomy' => 'job_listing_category', 'hierarchical' => 1, 'show_option_all' => __( 'Any category', 'wp-job-manager' ),'orderby' => 'id', 'name' => 'search_categories',  'selected' => $selected_category, 'multiple' => false ) ); ?>
            <?php endif; ?>
https://wordpress.org/plugins/wp-job-manager/

这是很久以前的事了,但我需要这个,似乎没有关于它的真正好的文档。

添加到wp-job-manager-functions.php第265行之后(在函数get_job_listing_categories()之后)

function get_job_listing_categories_child($id_child) {
    if ( ! get_option( 'job_manager_enable_categories' ) ) {
        return array();
    }
    return get_terms( "job_listing_category", array(
        'orderby'       => 'id',
        'order'         => 'ASC',
        'hide_empty'    => true,
        'child_of'        => $id_child,
    ) );
}

如果你想访问这个目录你可以这样写:

<?php foreach ( get_job_listing_categories_child(86) as $cat ) : ?>
<option value="<?php echo esc_attr( $cat->term_id ); ?>">
<?php echo esc_html( $cat->name ); ?>
</option>
<?php endforeach; ?>

但是在86所在的地方,你必须把孩子头部的id放上去要获得孩子的头的id去你的管理面板,点击编辑你想要的一个。然后你会在url中看到tag_ID=后面的数字是你想要使用的id