我有几个人和我一起在一个网站上工作,他们需要使用一组非常简单的规则创建自定义分类术语;然而,他们似乎不知道如何做到这一点。所以,我试图创建一个某种过滤器,它会自动将它们的值替换为正确的值。例如,他们应该是这样的:
[name] -> UTA_1234 // type of training + _ + post id of training
[slug] -> uta_1234 // which should be automatic if left blank
[description] -> 1234 // just the post id
看起来很简单,对吧?嗯,他们一直把它们改成小写,用破折号代替下划线,忘记添加描述(
因此,以下是我试图做的不起作用的事情:
/**
* \'codes\' is the taxonomy slug
*/
add_action( \'created_codes\', \'eri_created_incorrect_access_id\', 10, 2 );
function eri_created_incorrect_access_id( $term_id, $tt_id ) {
// Catch the term info
$name = $_POST[\'name\'];
$slug = $_POST[\'slug\'];
$desc = isset($_POST[\'description\']) ?? \'\';
// Replace dashes with underscores, and make name uppercase
$name = strtoupper(str_replace(\'-\', \'_\', $name));
$slug = str_replace(\'-\', \'_\', $slug);
// Check if there is a description
if (!$desc || $desc == \'\') {
// Then we split the name and add the post id to the description
$split_name = explode(\'_\', $name);
$desc = $split_name[1];
}
// Now add the items
add_term_meta( $term_id, \'name\', $name, true );
add_term_meta( $term_id, \'slug\', $slug, true );
add_term_meta( $term_id, \'description\', $desc, true );
}
相同的概念适用于其他自定义字段,但不适用于默认字段
最合适的回答,由SO网友:Sally CJ 整理而成
默认字段name
, slug
和description
不是术语元数据,因此应该使用wp_update_term()
更新这些字段。
那就换掉这三个add_term_meta()
使用:
wp_update_term( $term_id, \'codes\', [
\'name\' => $name,
\'slug\' => $slug,
\'description\' => $desc,
] );
此外,不使用
$_POST
, 我会使用
get_term()
获取刚刚创建的术语的详细信息。例如,
$term = get_term( $term_id );
// Catch the term info
$name = $term->name;
$slug = $term->slug;
$desc = $term->description;