質問: array( 'theme_location' => 'lower-bar', 'depth' => 0, 'container' => false, 'fallback_cb' => false, 'menu_class' => 'nav navbar-nav', 'walker' => new bootstrapnavmenuwalker() ); wp_nav_menu($args); ?> 私はwordpressのメニューをこのように使うという考えと結婚していません。通常はハードコーディングします。空の子カテゴリを除外しながら、すべての親カテゴリとページを表示する方法はありますか。
回答: 私はこれについて少し違ったやり方をするでしょう。まだwp_get_nav_menu_itemsフィルタを使用していますが、最初にすべての空の用語のidを含む配列を作成します。それでは、除外のために$itemsのそれぞれをこれと比較します。add_filter( 'wp_get_nav_menu_items', 'wpse177082', 10, 3 ); function wpse177082 ( $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; } もちろん、必要に応じてwoocommerce商品カテゴリにのみ影響を与えるようにこれをさらに制限することもできます。