为了账号安全,请及时绑定邮箱和手机立即绑定

如何隐藏字压空子分类?

如何隐藏字压空子分类?

PHP
阿波罗的战车 2022-09-12 09:58:59
我正在使用此代码来隐藏空类别,并且它有效。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 ) && ( in_array( $item->object_id, $nopost ) ) ) {            unset( $items[$key] );        }    }    return $items;}但我希望它仅适用于子类别...而不是父类别。所以现在它隐藏了一些父类别,我不想要这样。我只想隐藏空的子类别。我该怎么做?
查看完整描述

1 回答

?
慕虎7371278

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;

}


查看完整回答
反对 回复 2022-09-12
  • 1 回答
  • 0 关注
  • 52 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信