突出显示wp_list_ategories中的“Show All”项

时间:2019-03-17 作者:Krzysiek Dróżdż

我使用wp_list_categories 在后期存档上显示类别筛选器。

我可以使用current_category 参数来设置当前类别,这样的项目将获得添加类current-cat. 我甚至可以省略这个参数-在这种情况下,当前类别将来自get_queried_object().

但是我想在导航中显示“全部显示”链接。我所要做的就是show_option_all 参数。

这是我的问题。如果未选择任何类别,如何突出显示此选项?

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

遗憾的是,没有允许直接修改“全部显示”链接或将任何类添加到此项目的筛选器:

$output .= "<li class=\'cat-item-all\'><a href=\'$posts_page\'>$show_option_all</a></li>";
但是有一个wp_list_categories 在函数末尾,允许您修改所有输出。这里有一个过滤器,如果没有,它将突出显示“全部显示”选项current_category 已设置,我们不会访问给定分类法中的任何术语。

function wp_list_categories_highlight_all( $output, $args ) {
    if ( array_key_exists( \'show_option_all\', $args ) && $args[\'show_option_all\'] ) {
        if ( ! array_key_exists( \'current_category\', $args ) || $args[\'current_category\'] ) {
            if ( is_category() || is_tax() || is_tag() ) {
                if ( ! array_key_exists( \'taxonomy\', $args ) ) {
                    $args[\'taxonomy\'] = \'category\';
                }
                $current_term_object = get_queried_object();
                if ( $args[\'taxonomy\'] !== $current_term_object->taxonomy ) {
                    $output = str_replace( "class=\'cat-item-all\'", "class=\'cat-item-all current-cat\'", $output );
                }
            } else {
                $output = str_replace( "class=\'cat-item-all\'", "class=\'cat-item-all current-cat\'", $output );
            }
        }
    }

    return $output;
}
add_filter( \'wp_list_categories\', \'wp_list_categories_highlight_all\', 10, 2 );

相关推荐

使用Add_Filters()、Apply_Filter()、Add_action()和do_action()扩展插件

假设我正在开发一个与预订相关的插件。下次我想在那个插件上添加一个附加组件来支付。然后,我为贝宝支付添加了另一个附加组件。假设下面是html中的支付网关UI界面<div class=\"payments-options\"> <div class=\"bank-payment\"></div> <div class=\"cash-on-delivery\"></div> <!--- Here i