替代手动编写SQL查询的另一种方法是使用,例如:
$post_ids = get_posts(
[
\'fields\' => \'ids\',
\'post_type\' => \'attachments\',
\'orderby\' => \'menu_order\',
\'order\' => \'ASC\',
\'post__in\' => wp_parse_id_list( $input_ids )
]
);
handy在哪里
wp_parse_id_list() 核心功能用于:
清理以数组、逗号或空格分隔的ID列表。
这将生成以下SQL查询:
SELECT wp_posts.ID
FROM wp_posts
WHERE 1=1
AND wp_posts.ID IN (1,2,3)
AND wp_posts.post_type = \'attachments\'
AND (wp_posts.post_status = \'publish\')
ORDER BY wp_posts.menu_order ASC
LIMIT 0, 5
如果
$input_ids = [1,2,3]
.
但实际上this is how 这个post__in
输入已在中清理WP_Query
:
$post__in = implode(\',\', array_map( \'absint\', $q[\'post__in\'] ));
$where .= " AND {$wpdb->posts}.ID IN ($post__in)";
附言:我现在记得贴了张票
#34525 建议使用
wp_parse_id_list()
在内部
WP_Query
;-)