更改自定义分类输入的外观

时间:2011-01-21 作者:Travis Northcutt

我正在一个网站上工作,该网站将使用一些自定义分类法(用于自定义帖子类型)。我选择将一些分类法分层,因为对于这个站点来说,输入值的方法(复选框)比非分层分类法的自由形式输入更可取。然而,我会really like是能够使用单选按钮输入,而不是复选框。此外,我想删除用于在分类法中选择父项的下拉列表。screenshot

我是不是走错了方向?我应该从非层次分类法开始,改为修改这些分类法上的输入方法吗?我完全愿意接受意见,如果可以的话,我很乐意回答任何问题或提供更多信息。

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

当然,只要使用CSS和\'admin_head\' 钩住使其消失。我相信这就是你要找的?

Hierarchical taxonomy entry on WordPress post page without the parent
(来源:mikeschinkel.com)

只需在主题中添加以下内容functions.php 文件或到.php 您可能正在编写的插件的文件。请注意,我包括\'init\' 钩子来定义“Home”post类型和“Bath”分类法,以便其他人可以更轻松地遵循该示例。还请注意,如果您的分类名为“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\' ),
    )
  );
}
更新,看来我错过了the radio button part 问题的关键。不幸的是,WordPress并没有让这变得容易,但您可以使用PHP output buffering (通过ob_start()ob_get_clean() 功能。)只需在输出metabox之前找到一个钩子(\'add_meta_boxes\') 输出后还有一个挂钩(\'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;
}
证据:

Screenshot showing taxonomies using radio buttons
(来源:mikeschinkel.com)

SO网友:pax

或者,如果您懒惰,可以使用此插件:Single Value Taxonomy UI

(我宁愿将此作为对Mike答案的评论,因为它基本上做了相同的事情-但我还不能添加评论)

结束

相关推荐