当您编辑帖子并选择子类别或术语并进行更新时,所选术语会显示在顶部(这可能会导致混淆的情况,即“foo”、“foo”和“foo”分别由不同的父级选择,无法区分它们)。
如何防止这种行为?要么显示父术语以提供上下文,要么停止将其移到顶部
当您编辑帖子并选择子类别或术语并进行更新时,所选术语会显示在顶部(这可能会导致混淆的情况,即“foo”、“foo”和“foo”分别由不同的父级选择,无法区分它们)。
如何防止这种行为?要么显示父术语以提供上下文,要么停止将其移到顶部
这也让我讨厌。这很令人困惑,所以我想我应该调查一下。
该元框是在中创建的"wp-admin/includes/meta-boxes.php" on line ~399. 它使用wp_terms_checklist
. 问题代码似乎是这样的(这是源代码中的一个):
<?php wp_terms_checklist(
$post->ID, array(
\'taxonomy\' => $taxonomy,
\'popular_cats\' => $popular_ids
) ) ?>
这给我留下了几个选择。您可以使用Javascript对列表进行重新排序。您无法删除古怪的类别,因为它们在列表中不可用。但我怀疑这会很快或很容易。
或者,可以使用删除默认框remove_meta_box
并使用add_meta_box
将上面的行更改为:
<?php wp_terms_checklist(
$post->ID,
array(
\'taxonomy\' => $taxonomy,
\'popular_cats\' => $popular_ids
\'check_ontop\' => false
) ) ?>
Thechecked_ontop
部分是关键。要添加这几个字符,删除和添加一个元盒似乎还有很长的路要走,我有点讨厌这样做,因为它非常接近核心黑客(但不是:),尽管对核心的更改可能意味着需要重写该函数。不过,我认为没有任何其他实物期权。EDIT: 好啊我原本以为没有钩子可以帮上忙,但有一个钩子。你只需要:
function tst($args) {
$args[\'checked_ontop\'] = false;
return $args;
}
add_filter(\'wp_terms_checklist_args\',\'tst\');
这将在全球范围内改变事物,因此可能有必要对其进行更改,使其仅在特定页面上运行。幸亏Tom J Nowell. 有时候犯错是好事。
我可能误解了这个问题,但是如果你知道,看看最初的层次结构,哪些子类别是合适的,那么你可以使用如下插件Parent Category Toggler 选择子对象时自动选择父对象。
WordPress Codex指出,帖子类型名称和分类名称对slug名称有限制。Register Post Type -- 最多20个字符,不能包含大写字母或空格Register Taxonomy -- 分类的名称。名称应为插入形式(不得包含大写字母或空格),长度不得超过32个字符(数据库结构限制)</然而,WordPress Codex没有说明Post Meta或Terms是否对slug名称有限制。Add Post Meta -- 无缓动限制Insert Term -- 无缓动限制</这能得