我的Get_Terms不适用于自定义字段

时间:2016-11-30 作者:RubyTuesday

这将起作用并产生结果:

{% set query_parameters = {
   taxonomy: term.taxonomy,
   parent: term.id,
} %}
{% set terms = wordpress.call(\'Timber::get_terms\', query_parameters) %}
但事实并非如此:

{% set query_parameters = {
   taxonomy: term.taxonomy,
   parent: term.id,
   meta_query: {
     0: {
       key: \'test_type\',
       value: \'8114\',
       compare: \'LIKE\',
     },
   },
} %}
{% set terms = wordpress.call(\'Timber::get_terms\', query_parameters) %}
test\\u type是使用ACF创建的自定义字段。执行工作的结果转储包含:

["test_type"]=> array(2) { [0]=> int(8114) [1]=> int(8115) }
可能有什么问题?

1 个回复
SO网友:RubyTuesday

这一问题与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。

相关推荐