如何查询有高级自定义字段的类别?

时间:2014-04-16 作者:Ruriko

我目前正在使用高级自定义字段,我想知道是否有人知道如何按自定义字段筛选类别?我的类别中有一个使用复选框字段的自定义字段。我想制作一个页面,列出包含勾选的特定复选框字段的类别。例如,我的类别中有3个复选框,分别是浪漫、行动和;戏我已经勾选了复选框操作,我想在页面上列出勾选了复选框戏剧的类别。

这与本教程类似http://www.advancedcustomfields.com/resources/how-to/how-to-query-posts-filtered-by-custom-field-values/ 除了我想得到类别而不是帖子。因为我不是程序员,最简单的方法是什么?

3 个回复
最合适的回答,由SO网友:Bindiya Patoliya 整理而成

尝试以下操作:

   $value = get_field(\'field_name\');
在此基础上尝试整个流程http://www.advancedcustomfields.com/resources/how-to/filter-posts-by-custom-fields/

   $value = get_field(\'field_name\', $category->cat_ID);

SO网友:Milo

问题是没有像帖子那样的分类元数据。ACF分类数据序列化存储在options表中,因此无法像post meta can那样进行查询。您必须加载所有术语,并分别检查与每个术语关联的数据。

也许更好的解决方案是创造浪漫、行动和;戏剧化父术语,并使其他术语成为其中一个父术语的子术语。

SO网友:Jawed

如果你有很多类别,那么每次搜索每个类别并对照字段值进行检查将是一件痛苦的事。

我写了一些东西,我很想知道它是否正确

首先,我编写了一个从值中获取选项名称的函数,因为wordpress core只提供一个从名称中获取选项值的函数

function get_option_name_by_value( $option, $default = false ) {
  global $wpdb;

  $option = trim( $option );
  if ( empty( $option ) )
    return false;

  $name = wp_cache_get( $option, \'options_names\' );

  if ( false === $name ) {
    $row = $wpdb->get_row( $wpdb->prepare( "SELECT option_name FROM $wpdb->options WHERE option_value = %s LIMIT 1", $option ) );
    // Has to be get_row instead of get_var because of funkiness with 0, false, null values
    if ( is_object( $row ) ) {
        $name = $row->option_name;
        wp_cache_add( $option, $name, \'options\' );
    } else return false;
  }
  return $name;
}
由于选项名称上有术语id(taxonomy\\u termId\\u filedName),因此只需通过explode(\'_\',$optionName)

结束

相关推荐

WP_Query tax_query problem

当我在中调用WP\\u Query with tax Query或category\\uu时,我只从请求的类别数组中的第一个类别获取帖子。$query = new WP_Query( array( \"tax_query\" => array( array( \"taxonomy\" => \"category\", \"field\" =&g

如何查询有高级自定义字段的类别? - 小码农CODE - 行之有效找到问题解决它

如何查询有高级自定义字段的类别?

时间:2014-04-16 作者:Ruriko

我目前正在使用高级自定义字段,我想知道是否有人知道如何按自定义字段筛选类别?我的类别中有一个使用复选框字段的自定义字段。我想制作一个页面,列出包含勾选的特定复选框字段的类别。例如,我的类别中有3个复选框,分别是浪漫、行动和;戏我已经勾选了复选框操作,我想在页面上列出勾选了复选框戏剧的类别。

这与本教程类似http://www.advancedcustomfields.com/resources/how-to/how-to-query-posts-filtered-by-custom-field-values/ 除了我想得到类别而不是帖子。因为我不是程序员,最简单的方法是什么?

3 个回复
最合适的回答,由SO网友:Bindiya Patoliya 整理而成

尝试以下操作:

   $value = get_field(\'field_name\');
在此基础上尝试整个流程http://www.advancedcustomfields.com/resources/how-to/filter-posts-by-custom-fields/

   $value = get_field(\'field_name\', $category->cat_ID);

SO网友:Milo

问题是没有像帖子那样的分类元数据。ACF分类数据序列化存储在options表中,因此无法像post meta can那样进行查询。您必须加载所有术语,并分别检查与每个术语关联的数据。

也许更好的解决方案是创造浪漫、行动和;戏剧化父术语,并使其他术语成为其中一个父术语的子术语。

SO网友:Jawed

如果你有很多类别,那么每次搜索每个类别并对照字段值进行检查将是一件痛苦的事。

我写了一些东西,我很想知道它是否正确

首先,我编写了一个从值中获取选项名称的函数,因为wordpress core只提供一个从名称中获取选项值的函数

function get_option_name_by_value( $option, $default = false ) {
  global $wpdb;

  $option = trim( $option );
  if ( empty( $option ) )
    return false;

  $name = wp_cache_get( $option, \'options_names\' );

  if ( false === $name ) {
    $row = $wpdb->get_row( $wpdb->prepare( "SELECT option_name FROM $wpdb->options WHERE option_value = %s LIMIT 1", $option ) );
    // Has to be get_row instead of get_var because of funkiness with 0, false, null values
    if ( is_object( $row ) ) {
        $name = $row->option_name;
        wp_cache_add( $option, $name, \'options\' );
    } else return false;
  }
  return $name;
}
由于选项名称上有术语id(taxonomy\\u termId\\u filedName),因此只需通过explode(\'_\',$optionName)

相关推荐

如何读取WordPress$Query关联数组(散列)键的值

WordPress编程新手(来自更为传统的环境),并试图了解其一些“独特”特性。我们的网站上有一个目录页,此代码驻留在functions.php, 如果条件为true,则调整结果。if( $query->is_post_type_archive( \'directory\' ) ){ ...//do stuff } 我想知道如何获取is_post_type_archive 这就是“目录”当我对值使用测试时。。。var_dumb($query->is_post