我有一个代码片段可以在加载编辑页面时执行此操作,而不是在保存时执行。(这样用户可以在点击publish之前查看所选内容,在post\\u save上分配默认术语也就不足为奇了)。
我已经有了一个将复选框更改为单选按钮的功能,但它似乎也是添加的适当位置checked
至其中一个输入。
用于添加新项,用于编辑现有项。
// Press type taxonomy
// - Replace checkboxes for radio buttons
// - Select "Press release" by default
add_filter(\'wp_terms_checklist_args\', \'press_type_radio_checklist\');
function press_type_radio_checklist($args)
{
$radio_taxonomies = [
\'press_type\',
];
if (!empty($args[\'taxonomy\']) && in_array($args[\'taxonomy\'], $radio_taxonomies)) {
if (empty($args[\'walker\']) || is_a($args[\'walker\'], \'Walker\')) {
// Radio button taxonomy walker
if (!class_exists(\'Walker_Radio_Checklist\')) {
class Walker_Radio_Checklist extends Walker_Category_Checklist
{
function walk($elements, $max_depth, $args = [])
{
$output = parent::walk($elements, $max_depth, $args);
$output = str_replace([
\'type="checkbox"\',
"type=\'checkbox\'",
], [
\'type="radio"\',
"type=\'radio\'",
], $output);
// If there aren\'t any selected cats, select the default
if (empty($args[\'selected_cats\'])) {
$default_term = get_term_by(\'name\', \'Press release\', \'press_type\');
if (!empty($default_term) && $default_term instanceof WP_Term) {
$default_term_id = $default_term->term_id;
$output = str_replace([
\'input value="\' . $default_term_id . \'"\',
"input value=\'$default_term_id\'",
], [
\'input value="\' . $default_term_id . \'" checked\',
"input value=\'$default_term_id\' checked",
], $output);
}
}
return $output;
}
}
}
$args[\'walker\'] = new Walker_Radio_Checklist;
}
}
return $args;
}