WP功能以WP-Admin样式显示自定义分类

时间:2015-12-23 13:55:04

标签: php wordpress

我已向用户添加了自定义分类 - 用户类别。

使用以下代码,我可以在每个编辑用户个人资料页面中输出自定义分类:

function show_user_category( $user ) {

//get the terms that the user is assigned to
$assigned_terms = wp_get_object_terms( $user->ID, 'user_category' );
$assigned_term_ids = array();
foreach( $assigned_terms as $term ) {
    $assigned_term_ids[] = $term->term_id;
}

//get all the terms we have
$user_cats = get_terms( 'user_category', array('hide_empty'=>false) );

echo "<h3>User Category</h3>";

//list the terms as checkbox, make sure the assigned terms are checked
foreach( $user_cats as $cat ) { ?>
    <input type="checkbox" id="user-category-<?php echo $cat->term_id ?>" <?php if(in_array( $cat->term_id, $assigned_term_ids )) echo 'checked=checked';?> name="user_category[]"  value="<?php echo $cat->term_id;?>"/>
    <?php
    echo '<label for="user-category-'.$cat->term_id.'">'.$cat->name.'</label>';
    echo '<br />';
}
}

上面的代码只显示一个复选框列表,按term_id排序。

当然,我希望以自定义分类术语在自定义帖子类型中显示的方式显示它们(可滚动的复选框列表,其中子项缩进并在其父术语下面)。上面的代码不会按照父母/子女的顺序显示这些条款。

是否有WP功能我可以通过我的分类法&amp;条款,以创建我在上面段落中描述的内容?或者我必须手动完成吗?

由于

1 个答案:

答案 0 :(得分:0)

简答:
是的,有。它们被称为post_categories_meta_box()post_tags_meta_box(),具体取决于您使用的分类法类型。

答案很长:
这是可以通过检查WP核心代码来回答的问题。

以下是我如何回答这个问题:

在管理中修改网页会导致网址为wp-admin/post.php。因此,请检查该文件(post.php)。

在该文件中快速搜索&#34; tax&#34;没有任何结果,所以我们至少可以查看case 'edit'部分,因为我们知道我们正在进行编辑。我们可以看到它包含一个文件edit-form-advanced.php

因此,请检查该文件(edit-form-advanced.php)

快速搜索&#34; tax&#34;进入一个看起来很有希望的地区。

我们在这里看到他们调用get_taxonomy,然后返回的get_taxonomy对象有一个名为meta_box_cb的回调 - 所以对它进行跨文件搜索。我们找到了几个实例,但是taxonomy.php中的实例是最有希望的(因为文件名),所以让我们看一下。

(在taxonomy.php的第430行附近)出现了一对回调函数--WP核心正在使用的post_categories_meta_boxpost_tags_meta_box。让我们检查一下 - 对function post_categories_meta_box进行跨文件搜索,我们发现文件meta-boxes.php中存在这两个函数。功能评论非常好,并告诉我们您的要求:&#34;显示帖子类别表单字段&#34;。

有了这些信息,我们可以向Google询问,我们会找到有关这些功能的WP文档:

post_categories_meta_box

post_tags_meta_box