我需要查询所有WordPress帖子,并创建一个数组,其中包含所有帖子的自定义字段的所有值。
这是我以前用于少量帖子的内容。
//Get all the posts
$args = array(
'post_type' => 'my_custom_post_type',
'numberposts' => -1,
'post_status' => array('publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit'),
);
$posts = get_posts( $args );
//Get all the values and put them in an array
$custom_field_array = array();
foreach ($posts as $post) {
$custom_field_array[] = (int)get_post_meta( $post->ID, 'my_custom_field', true );
}
当帖子的数量不是很大时,效果很好,但是我现在需要获得5,000多个帖子(并且还在不断增长)的my_custom_field
值。
一旦帖子数量过大,get_posts
将不会返回任何内容。不确定所需的内存是否太大,我不确定,但是现在我需要获取5,000多个帖子的my_custom_field
值,而对于那么多帖子却不起作用。
我还能如何获得这些值?
或者还有其他方法可以使get_posts
处理大量帖子吗?
答案 0 :(得分:0)
您还可以通过MYSQL Select查询获取所有帖子。
global $wpdb;
$querystr = "
SELECT $wpdb->posts.*
FROM $wpdb->posts, $wpdb->postmeta
WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id
AND $wpdb->postmeta.meta_key = 'my_custom_field'
AND $wpdb->posts.post_type = 'my_custom_post_type'
ORDER BY $wpdb->posts.post_date DESC
";
$pageposts = $wpdb->get_results($querystr, OBJECT);
print_r($pageposts);