php – 多层次结构类别没有在wordpress分类中显示第三级层次结构
发布时间:2020-12-13 16:09:58 所属栏目:PHP教程 来源:网络整理
导读:我有自定义帖子类型的3个级别的类别,类别,子类别和子子类别.我试图使用cmb2在下拉列表中显示这些类别,我的代码只显示2个级别的类别和缺少第三级. Category 1 -- child category 1 -- child category 2 -- addon category 1 -- addon category 2 -- child cat
我有自定义帖子类型的3个级别的类别,类别,子类别和子子类别.我试图使用cmb2在下拉列表中显示这些类别,我的代码只显示2个级别的类别和缺少第三级.
Category 1 -- child category 1 -- child category 2 -- addon category 1 -- addon category 2 -- child category 3 -- child category 4 -- addon category 1 -- addon category 2 Category 2 -- child category 1 -- child category 2 -- addon category 1 -- addon category 2 -- child category 3 -- child category 4 -- addon category 1 -- addon category 2 我正在使用cmb2在select2中使用multiselect选项获取这些类别. 并记下以下代码: function gp_get_cmb_options_array_tax( $taxonomy,$args = array() ) { if ( empty( $taxonomy ) ) { return; } $defaults = array( 'hide_empty' => 0,); $args = wp_parse_args( $args,$defaults ); $terms = get_terms( $taxonomy,$args ); /** * https://developer.wordpress.org/reference/functions/_get_term_hierarchy/ */ $hierarchy = _get_term_hierarchy( $taxonomy ); $term_list = array(); foreach ( $terms as $term ) { if( $term->parent ) { continue; } $term_list[ $term->term_id ] = $term->name; if( isset( $hierarchy[ $term->term_id ] ) ) { foreach ( $hierarchy[ $term->term_id ] as $child ) { $child = get_term( $child,$taxonomy ); $term_list[ $child->term_id ] = $term->name . ' > ' . $child->name; } } } return $term_list; } 和下拉显示如下: Category 1 Category 1 > child category 1 Category 1 > child category 2 Category 1 > child category 3 Category 1 > child category 4 Category 2 Category 2 > child category 1 Category 2 > child category 2 Category 2 > child category 3 Category 2 > child category 4 虽然应该表现得像 Category 1 Category 1 > child category 1 Category 1 > child category 2 Category 1 > child category 2 > addon category 1 Category 1 > child category 2 > addon category 2 Category 1 > child category 3 Category 1 > child category 4 解决方法
你只需要更深层次地循环:
function gp_get_cmb_options_array_tax( $taxonomy,$taxonomy ); $term_list[ $child->term_id ] = $term->name . ' > ' . $child->name; if( !isset( $hierarchy[ $child->term_id ] ) ) continue; foreach ($hierarchy[ $child->term_id ] as $subchild) { $subchild = get_term( $subchild,$taxonomy ); $term_list[ $subchild->term_id ] = $term->name . ' > ' . $child->name. ' > ' .$subchild->name; } } } } return $term_list; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |