这一问题与ACF有关,这里讨论了这一问题以及解决方案:https://support.advancedcustomfields.com/forums/topic/how-to-use-wp-term-meta-on-acf-the-easy-way/
由于那里有各种海报,我添加到mu插件的代码是:
function acf_update_term_meta($value, $post_id, $field) {
$object = get_queried_object();
$term_id = intval(filter_var($post_id, FILTER_SANITIZE_NUMBER_INT));
if (!isset($object->taxonomy) || !isset($object->term_id) || $term_id != $object->term_id) {
// the current object is not a term
return $value;
}
update_term_meta($term_id, $field[\'name\'], $value);
return $value;
}
add_filter(\'acf/update_value\', \'acf_update_term_meta\', 10, 3);
function acf_load_term_meta($value, $post_id, $field) {
$term_id = intval(filter_var($post_id, FILTER_SANITIZE_NUMBER_INT));
if($term_id > 0)
$new_value = get_term_meta($term_id, $field[\'name\'], true);
return $new_value ? $new_value : $value;
}
add_filter(\'acf/load_value\', \'acf_load_term_meta\', 10, 3);
一个区别是,在加载term meta时,我检查是否实际从get\\u term\\u meta返回了一个值,如果没有返回,则返回原始值。这有助于不松散现有的元值,从而可以以新的方式更新它们。
请注意,在以新方式更新这些值之前,无法查询这些值,这需要编辑和保存所有术语。
最后要注意的是,如果元值是一个对象,那么它似乎是唯一可以查询的id。