仅使用wordpress查询自定义字段

时间:2018-04-08 12:29:57

标签: wordpress custom-fields

我在我的mysql数据库上执行以下WP_Query:

$products = new WP_Query(array(
    'post_type' => 'posts',
    'meta_query' => array(
        array(
            'key' => 'meta_key',
            'compare' => '=',
            'value' => '_cegg_data_Amazon',
        ),
    ),
));

当我var_dump($product)时,我收到一个很长的wp_Query对象。但是,我只想收到自定义帖子字段的对象/列表。下面的SQL查询在phpmyadmin中给出了我的确切信息:

SELECT * FROM `wp_postmeta` where meta_key="_cegg_data_Amazon" ORDER BY `wp_postmeta`.`meta_key` ASC

有关如何仅获取自定义字段_cegg_data_Amazon的值的任何建议。感谢您的回复!

1 个答案:

答案 0 :(得分:1)

我认为最简单的方法是遍历您的WP_Query对象并使用所需的字段创建数组(或新的obj):

$products = new WP_Query(array(
    'post_type' => 'posts',
    'meta_query' => array(
        array(
            'key' => 'meta_key',
            'compare' => '=',
            'value' => '_cegg_data_Amazon',
        ),
    ),
));

$cegg_data = array(); // initiate the new array


if( $products->have_posts() ) : 

    while( $products->have_posts() ) : $products->the_post();

        $cegg_data[] = get_post_meta(get_the_ID(), '_cegg_data_Amazon', true); // populate array with the new value

    endwhile;

endif;

wp_reset_query();   

现在,如果你var_dump“$ cegg_data”它应该包含一个带有自定义字段值的索引数组。

注意:代码未经测试,只是快速草稿;)

您可以探索的另一个解决方案是此处记录的“posts_fields”过滤器:https://developer.wordpress.org/reference/hooks/posts_fields/

希望这会有所帮助并祝你好运;)

弗朗西斯