wordpress源码:get_terms 中 exclude_tree 里的 $taxonomies[0]??

moliu 2015-12-06 08:03:18
get_terms 中 exclude_tree 里的 $taxonomies[0]??为什么不是 $taxonomies??
@param string|array $taxonomies Taxonomy name or list of Taxonomy names.
@type array|string $exclude Array or comma/space-separated string of term ids to exclude.
If $include is non-empty, $exclude is ignored. Default empty array.
@type array|string $exclude_tree Array or comma/space-separated string of term ids to exclude
along with all of their descendant terms. If $include is non-empty, $exclude_tree is ignored.
Default empty array.
@type int $child_of Term ID to retrieve child terms of. If multiple taxonomies are passed, $child_of is ignored. Default 0.
@type bool|int $hide_empty Whether to hide terms not assigned to any posts. Accepts
1|true or 0|false. Default 1|true.
function get_terms( $taxonomies, $args = '' )

$exclusions = array();
if ( ! empty( $exclude_tree ) ) {
$exclude_tree = wp_parse_id_list( $exclude_tree );
$excluded_children = $exclude_tree;
foreach ( $exclude_tree as $extrunk ) {
$excluded_children = array_merge(
$excluded_children,
(array) get_terms( $taxonomies[0], array( 'child_of' => intval( $extrunk ), 'fields' => 'ids', 'hide_empty' => 0 ) )
); //为什么这里不是 $taxonomies??
}
$exclusions = array_merge( $excluded_children, $exclusions );
}

if ( ! empty( $exclude ) ) {
$exclusions = array_merge( wp_parse_id_list( $exclude ), $exclusions );
}
...全文
101 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
moliu 2016-02-26
答案在对参数 child_of 的说明: $child_of Term ID to retrieve child terms of .If multiple taxonomies are passed, $child_of is ignored. 也就是说,数组 $taxonomies 只能有一个元 素。
回复
moliu 2015-12-07
版主说得对。在wordpress 手册 http://codex.wordpress.org/Function_Reference/get_terms  所举例子中: <?php // no default values. using these as examples $taxonomies = array( 'post_tag', 'my_tax', ); $args = array( 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => true, 'exclude' => array(), 'exclude_tree' => array(), 'include' => array(), 'number' => '', 'fields' => 'all', 'slug' => '', 'parent' => '', 'hierarchical' => true, 'child_of' => 0, 'childless' => false, 'get' => '', 'name__like' => '', 'description__like' => '', 'pad_counts' => false, 'offset' => '', 'search' => '', 'cache_domain' => 'core' ); $terms = get_terms($taxonomies, $args); ?> $taxonomies[0] = “post_tag" ----在此例中,get_terms 还能正常使用,是因为它的参数使它避免了出现问题。如果 真存在这个问题的话,还是请高用致函 wordpress 开发组吧
回复
moliu 2015-12-07
由上可看出, $taxonomies[0] = category 我们知道,post_tag 没有 parent 属性。这种方法 是针对 ! empty( $exclude_tree ) 的,是对 category 而言的。 编码者直接这样调用 category ,虽没有问题,但我想,是存在 bug 的,是存在隐患的。 不知高手如何看这问题。
回复
xuzuning 2015-12-07
@param string|array $taxonomies Taxonomy name or list of Taxonomy names 分类名称或分类名称列表 由此可知 $taxonomies 是字符串或数组 不加判断的使用 $taxonomies[0] 是错误的!
回复
moliu 2015-12-07
<?php $taxonomy_objects = get_object_taxonomies( 'post', 'objects' ); print_r( $taxonomy_objects); ?> will output Array ( [category] => stdClass Object ( [hierarchical] => 1 [update_count_callback] => [rewrite] => [query_var] => category_name [public] => 1 [show_ui] => 1 [show_tagcloud] => 1 [_builtin] => 1 [labels] => stdClass Object ( ... ) ... [name] => category [label] => Categories ) [post_tag] => stdClass Object ( ... ) [post_format] => stdClass Object ( .... ) ) 由上可 $taxonomies[0]
回复
发帖
PHP
创建于2008-08-27

1.9w+

社区成员

“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
申请成为版主
帖子事件
创建了帖子
2015-12-06 08:03
社区公告
暂无公告