这也让我讨厌。这很令人困惑,所以我想我应该调查一下。
该元框是在中创建的"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
) ) ?>
The
checked_ontop
部分是关键。要添加这几个字符,删除和添加一个元盒似乎还有很长的路要走,我有点讨厌这样做,因为它非常接近核心黑客(但不是:),尽管对核心的更改可能意味着需要重写该函数。不过,我认为没有任何其他实物期权。
EDIT: 好啊我原本以为没有钩子可以帮上忙,但有一个钩子。你只需要:
function tst($args) {
$args[\'checked_ontop\'] = false;
return $args;
}
add_filter(\'wp_terms_checklist_args\',\'tst\');
这将在全球范围内改变事物,因此可能有必要对其进行更改,使其仅在特定页面上运行。
幸亏Tom J Nowell. 有时候犯错是好事。