我正在尝试根据自定义选择更改用户的术语名称。在术语meta中,我存储select选项的ID,并基于此ID在另一个分类法中查找适当的名称。现在,我想将这部分文本添加到每个术语名称中。我能找到的唯一过滤器是get_term
(或get_{$taxonomy}
) 和get_terms
查看更多项目。
问题是:在向$term->name
在任何一个过滤器中,它都会显示在名称输入的编辑术语屏幕中。这没什么奇怪的,因为我过滤了名称,所以它会显示在每个地方,但我如何才能防止在管理屏幕上出现这种行为?这是有问题的,因为此文本是select中的选项,所以每次保存后,下一个名称将附加到我的术语名称中。
图像问题:
每次保存后:
这是我的代码:
add_filter(\'get_term\', \'filter_term_name\', 10, 2);
function filter_term_name($term, $taxonomy) {
if ($taxonomy == \'my-taxonomy\') {
// numeric value of term in another taxonomy
$meta_value = get_term_meta($term->term_id, \'_my_meta_name\', true);
if ($meta_value) {
// get name of meta value from another taxonomy
$value = get_term($meta_value, \'another-taxonomy\');
if ($value) {
$term->name = sprintf(\'%s, %s\', $value->name, $term->name);
}
}
}
return $term;
}
SO网友:rassoh
您可以使用该功能检测您是否在前端is_admin()
, 像这样:
add_filter(\'get_term\', \'filter_term_name\', 10, 2);
function filter_term_name($term, $taxonomy) {
// return the term untuched if you are in the admin
if( is_admin() ) {
return $term;
}
if ($taxonomy == \'my-taxonomy\') {
// numeric value of term in another taxonomy
$meta_value = get_term_meta($term->term_id, \'_my_meta_name\', true);
if ($meta_value) {
// get name of meta value from another taxonomy
$value = get_term($meta_value, \'another-taxonomy\');
if ($value) {
$term->name = sprintf(\'%s, %s\', $value->name, $term->name);
}
}
}
return $term;
}