仅显示所选类别的子项 - Listify / Job Manager

时间:2015-10-18 16:32:07

标签: php wordpress

我试图在多选下拉列表中显示$ 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) ); ?>

您可以通过在主页上选择父类别来达到下拉菜单,然后转到显示结果的此页面。我希望此页面上的下拉列表仅显示所选类别的子类别(因为它当前显示所有类别的所有父项和子项)以缩小结果范围。但是,尽管我使用的代码完美地适用于下拉列表,但它会删除父类别和父类别的搜索结果,因此会显示所有结果,直到您选择一个不太理想的子类别为止。

如何仅显示所选父级的子类别时,如何保留父类别和结果。

没有

的周围代码
    <?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/

1 个答案:

答案 0 :(得分:1)

它已经很久以前了,但我需要这个,看起来并不是很好的文档。

在第265行之后添加到wp-job-manager-functions.php(在函数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,请转到您的管理面板,然后单击要编辑的那个。 然后你会在url中看到tag_ID =,之后的nummer是你想要使用的id