Get_Terms()的有效父级是什么?

时间:2016-01-07 作者:Nadroev

get_terms($taxonomy, array(\'parent\' => $parent));
这适用于某些父级,并为其他父级返回空数组。我检查了是否存在具有父ID的术语,以及子术语分类法的“父”字段中是否存在相同的ID。甚至直接从数据库粘贴副本。还有别的事吗?我看不出有工作的父母和没有工作的父母有什么区别。

编辑:当我通过仪表板添加新术语时,所有不可见术语都会出现。原来问题是有一个函数wp_insert_term() 用于添加术语,我使用$wpdb->insert 手动插入术语和分类法,这在某种程度上起到了作用。

2 个回复
最合适的回答,由SO网友:Nadroev 整理而成

使用wp_insert_term() 而不是$wpdb->insert 用于添加新条款。

SO网友:Pieter Goosen

正如您所描述的,唯一能够真正对结果产生影响的变量是分类法。如果您已验证与的父级存在条款1 以及5, 和get_terms() 仅返回父级为的条款的条款1, 它只能表示这个术语1 和期限5 属于不同的分类法。get_terms() 仅当传递的术语数据与传递的分类法关联时,才会返回结果。

你需要记住,all 无论分类如何,术语都存储在wp_terms 桌子关系存储在wp_term_taxonomy 桌子这是术语的分类法和父项保存的位置。

这里有一个小脚本,可以在任何页面上运行。这将打印所有分类法和与该分类法关联的所有术语,如果术语不是顶级术语,还将打印父ID。您可以使用它来“调试”您的问题

$taxonomies = get_taxonomies(); 
if ( $taxonomies ) {
    foreach ( $taxonomies as $taxonomy ) {
        $terms = get_terms( $taxonomy );
        if ( $terms ) {
            echo \'<strong>\' . strtoupper( $taxonomy ) . \'</strong></br>\';
            foreach ( $terms as $term ) {
                $parent_id = ( 0 != $term->parent ) ? \' and has a parent ID of \' . $term->parent : \'\';
                echo \'Term \'. $term->name . \' ID \' . $term->term_id . \' belongs to the taxonomy \'. $taxonomy . $parent_id . \'</br>\';
            }
        }
    }
}