我正在一个将利用一些自定义分类法(用于自定义帖子类型)的网站上。我选择对某些分类法进行分层,因为与非格式分类法的自由格式输入相比,此网站更希望输入值(复选框)的方法。但是,我真正想要的是能够使用单选按钮输入而不是复选框。另外,我想删除用于在分类法中选择父项的下拉列表。
我会以错误的方式处理吗?我应该从非分层分类法开始,而是修改那些分类法的输入法吗?我完全愿意提供意见,如果可以的话,我们将很乐意回答任何问题或提供更多信息。
我正在一个将利用一些自定义分类法(用于自定义帖子类型)的网站上。我选择对某些分类法进行分层,因为与非格式分类法的自由格式输入相比,此网站更希望输入值(复选框)的方法。但是,我真正想要的是能够使用单选按钮输入而不是复选框。另外,我想删除用于在分类法中选择父项的下拉列表。
我会以错误的方式处理吗?我应该从非分层分类法开始,而是修改那些分类法的输入法吗?我完全愿意提供意见,如果可以的话,我们将很乐意回答任何问题或提供更多信息。
Answers:
当然,只需使用CSS和'admin_head'
挂钩即可使其消失。我相信这就是您要寻找的?
(来源:mikeschinkel.com)
只需将以下内容添加到主题functions.php
文件或.php
您可能正在编写的插件文件中即可。请注意,我包括一个'init'
钩子来定义“主页”帖子类型和“浴室”分类法,以便其他人可以更轻松地遵循该示例。另请注意,如果您的分类法命名为Baths“,则需要将CSS选择器更改为,#newbaths_parent
而不是#newbath_parent
:
add_action('admin_head','remove_bath_parents');
function remove_bath_parents() {
global $pagenow;
if (in_array($pagenow,array('post-new.php','post.php'))) { // Only for the post add & edit pages
$css=<<<STYLE
<style>
<!--
#newbath_parent {
display:none;
}
-->
</style>
STYLE;
echo $css;
}
}
add_action('init','add_homes_and_baths');
function add_homes_and_baths() {
register_post_type('home',
array(
'label' => 'Homes',
'public' => true,
'rewrite' => array('slug' => 'homes'),
'hierarchical' => false,
)
);
register_taxonomy('bath', 'home', array(
'hierarchical' => true,
'label' => 'Baths',
'rewrite' => array('slug' => 'baths' ),
)
);
}
因此,似乎我错过了问题的单选按钮部分。不幸的是WordPress并不容易做到这一点,但是您可以通过使用PHP输出缓冲 (通过ob_start()
和ob_get_clean()
函数)来实现。只需在metabox输出之前找到一个钩子('add_meta_boxes'
),然后在metabox输出之前找到一个钩子('dbx_post_sidebar'
),然后搜索捕获的将HTML 'checkbox'
替换为,然后将其'radio'
回显到屏幕上,就可以完成工作!代码如下:
add_action('add_meta_boxes','mysite_add_meta_boxes',10,2);
function mysite_add_meta_boxes($post_type, $post) {
ob_start();
}
add_action('dbx_post_sidebar','mysite_dbx_post_sidebar');
function mysite_dbx_post_sidebar() {
$html = ob_get_clean();
$html = str_replace('"checkbox"','"radio"',$html);
echo $html;
}
和证据:
(来源:mikeschinkel.com)
<input>
和<select>
名称,您甚至无需执行任何操作即可捕获分类法。WordPress将为您做到这一点。或者,使用自定义字段并绕过分类法,这可能对此过大。
或者,如果您很懒,可以使用此插件:Single Value Taxonomy UI
(我会一直增加,而这是小李的答案,因为它主要是做同样的事情评论 - 但我还不能添加注释)