1 回答
TA贡献1802条经验 获得超4个赞
您根本不需要递归函数。该表具有另一个名为 的列,如果它是顶级项,则该列设置为,如果它是任何级别的子项,则该列将成为父项的 ID。只需添加term_taxonomyparent0
AND parent != 0
到您的查询,这应该照顾它。(也就是说,我觉得拉动术语并循环浏览项目以进行比赛有点过分,但是如果不了解更多,就很难推荐更好的解决方案,而且这不是一个糟糕的方法 - 那些“杀死苍蝇的锤子”之一。
它可能(相当)有点迂腐,但我也更喜欢在帮助器函数之外编写SQL语句,以便更容易一目了然地看到需要运行的内容::p repare,并且更容易处理更长的查询
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;
$sql = "
SELECT term_taxonomy_id
FROM $wpdb->term_taxonomy
WHERE count = 0
AND parent != 0
";
$no_posts = $wpdb->get_col( $sql );
foreach( $items as $key => $item ){
if( 'taxonomy' == $item->type && in_array($item->object_id, $no_posts) ){
unset( $items[$key] );
}
}
return $items;
}
- 1 回答
- 0 关注
- 52 浏览
添加回答
举报