使用wordpress中的自定义字段值获取自定义帖子类型数据

时间:2018-12-11 10:52:46

标签: wordpress custom-post-type advanced-custom-fields

我可以使用自定义字段值获取数据吗?我的post_typebrand-name,字段名是generic-name。那么如何使用generic-name获取所有数据?

这是代码:

$title = get_the_title(); 
$the_query = new WP_Query( array(
          'posts_per_page'=>9,
          'post_type'=>'brand-name',
          'order'   => 'ASC',
          'meta_query' => array(
           array(
                'key' => 'generic-name',// this key is advance custom field: type post_object
                'value' => $title,
                'type'  => 'char' // type not working
           ), 
        ), 
        'paged' => get_query_var('paged') ? get_query_var('paged') : 1) 
      );`

此代码无效。

2 个答案:

答案 0 :(得分:1)

您的AFC字段是一个发布对象,这意味着元值可以是单个发布ID,也可以是发布ID的序列化数组。

如果您的自定义字段设置为仅允许单个选择,则它将是一个id,可以像这样查询:

$post_id = get_the_ID(); 
$the_query = new WP_Query( array(
      'posts_per_page'=>9,
      'post_type'=>'brand-name',
      'order'   => 'ASC',
      'meta_query' => array(
       array(
            'key' => 'generic-name',// this key is advance custom field: type post_object
            'value' => $post_id,
       ), 
    ), 
    'paged' => get_query_var('paged') ? get_query_var('paged') : 1) 
  );`

如果您的自定义字段允许多项选择,那么它将是ID的序列化php数组。由于mysql不知道如何读取php序列化数据,因此您最好的方法是使用LIKE查询:

$post_id = get_the_ID(); 
$the_query = new WP_Query( array(
      'posts_per_page'=>9,
      'post_type'=>'brand-name',
      'order'   => 'ASC',
      'meta_query' => array(
       array(
            'key' => 'generic-name',// this key is advance custom field: type post_object
            'value' => sprintf("\"%s\"", $post_id),
            'compare' => 'LIKE'
       ), 
    ), 
    'paged' => get_query_var('paged') ? get_query_var('paged') : 1) 
  );`

答案 1 :(得分:0)

我认为这可能会对您有所帮助。请看看这个。

我可以使用自定义字段值获取数据吗? -是的,您可以使用自定义字段值获取数据。

首先,我们可以使用以下代码获取自定义字段值。

 <?php $custom_field_value= get_post_meta( get_the_ID(), 'generic-name', true ); ?>

此$ custom_field_value返回“通用名称”字段的值。

使用该值,我们可以形成WP_Query。

$the_query = new WP_Query( array(
      'posts_per_page'=>9,
      'post_type'=>'brand-name',
      'order'   => 'ASC',
      'meta_query' => array(
       array(
            'key' => 'generic-name',
            'value' => $custom_field_value
       ), 
    ), 
    'paged' => get_query_var('paged') ? get_query_var('paged') : 1) 
  );

谢谢。