我在我的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
的值的任何建议。感谢您的回复!
答案 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/
希望这会有所帮助并祝你好运;)
弗朗西斯