如何解决WooCommerce-自动从导航栏中隐藏空类别和子类别
我有以下代码块,可让所有空类别或子类别的存档页面从导航栏中隐藏起来,但它有两个明显的问题,需要我帮忙解决。
- 该代码隐藏了前端和后端的空白存档页面,这使得后端的编辑菜单变得困难,因为需要手动删除代码,然后在更改菜单后重新添加代码。
- 类别和子类别不会自动添加到网站的菜单部分。我无法激活“自动向此菜单添加新的顶层页面”部分,因为这是全局性的,并不仅仅适用于产品类别/子类别。
我当前使用的代码如下:
/* HIDE EMPTY CATEGORIES AND SUBCATEGORIES FROM NAVBAR - TO CORRECTLY EDIT THE MENU AT THE BACK-END,MAKE SURE YOU REMOVE THIS CODE */
function hide_empty_navbar_items ( $items,$menu,$args ) {
global $wpdb;
$empty = $wpdb->get_col( "SELECT term_taxonomy_id FROM $wpdb->term_taxonomy WHERE count = 0" );
foreach ( $items as $key => $item ) {
if ( ( 'taxonomy' == $item->type ) && ( in_array( $item->object_id,$empty ) ) ) {
unset( $items[$key] );
}
}
return $items;
}
add_filter( 'wp_get_nav_menu_items','hide_empty_navbar_items',10,3 );
解决方法
我设法找到了以下代码,该代码使您可以隐藏网站前端导航栏中的空类别和子类别级别,同时还允许以管理员身份登录的任何人仍可以在界面上看到完整的菜单结构后端。
此代码从本质上解决了最初问题中剩下的代码问题,并提供了更为实用的解决方案。
view
,
我做了这个,也是为了照顾物品库存。如果类别仅包含缺货商品,则不会显示菜单:
/**
Hide empty categories from menu
**/
if(!is_admin()) {
add_filter( 'wp_get_nav_menu_items','nav_remove_empty_category_menu_item',10,3 );
}
function nav_remove_empty_category_menu_item ( $items,$menu,$args ) {
global $wpdb;
$nopost = $wpdb->get_col( "SELECT term_taxonomy_id FROM $wpdb->term_taxonomy WHERE count = 0" );
foreach ( $items as $key => $item ) {
if ( ( 'taxonomy' == $item->type ) ) {
$object = get_term($item->object_id,$item->object);
$args = array(
'posts_per_page' => -1,'product_cat' => $object->slug,'post_type' => 'product','orderby' => 'title','meta_query' => array(
array(
'key' => '_stock_status','value' => 'instock'
)
)
);
$the_query = new WP_Query( $args );
if($the_query->post_count <= 0){
unset( $items[$key] );
}
}
}
return $items;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。