如何为WordPress的get_posts()传参以排除post_content字段?
如何用get_posts()排除post_content字段
get_posts()本身没有直接用于排除特定字段的参数,但可以通过两种方式实现需求:
方法一:使用fields参数指定需要的字段
直接在get_posts()的参数中通过fields列出你需要获取的字段(比如ID、标题、发布日期等),这样查询结果就不会包含未指定的post_content字段。示例代码:
$target_posts = get_posts(array( 'posts_per_page' => 10, // 根据需求调整数量 'fields' => 'ids,post_title,post_date,post_author' // 仅获取这些字段,自动排除post_content ));
这种方式简单直接,适合明确知道需要哪些字段的场景。
方法二:通过posts_fields过滤器修改SQL查询
如果需要保留大部分默认字段,仅排除post_content,可以使用posts_fields过滤器修改查询的SQL字段列表,移除post_content。示例代码:
// 临时添加过滤器,移除post_content字段 add_filter('posts_fields', function($original_fields) { return str_replace('post_content,', '', $original_fields); }); // 执行查询 $target_posts = get_posts(array( 'posts_per_page' => 10 )); // 立即移除过滤器,避免影响后续的数据库查询 remove_filter('posts_fields', function($original_fields) { return str_replace('post_content,', '', $original_fields); });
注意:使用过滤器后一定要及时移除,否则会影响其他WordPress查询的结果。
内容的提问来源于stack exchange,提问作者TechnoBoy
相关产品推荐
相关产品推荐

