WordPress get_posts()获取指定分类媒体文件仅返回部分结果
返回结果仅为5条的核心原因
get_posts()默认继承后台「设置 > 阅读」中配置的每页文章显示数量,该配置默认值为5。你的查询参数中没有手动指定返回条数,因此查询被默认分页规则截断,只返回排序在前的5条结果。- 默认参数下
get_posts()仅查询状态为publish的内容,而媒体附件(attachment类型)的系统状态为inherit,未手动指定状态时,部分未关联已发布内容的附件会被直接过滤,进一步减少返回结果数。 - 你当前能返回5条分类匹配的结果,说明
category_name参数已生效,不存在分类绑定错误的问题。
修正后可正常获取全部11个媒体文件的代码
将原有查询逻辑替换为如下代码即可:
function adjust_background_image(){ $args = array( 'post_type' => 'attachment', 'post_status' => 'inherit', // 匹配附件的固有状态,避免被状态规则过滤 'posts_per_page' => -1, // 参数值为-1时代表关闭分页,返回所有符合条件的结果 'category_name' => 'pw-background', 'no_found_rows' => true, // 关闭分页总数统计,优化查询性能 ); $attachments = get_posts($args); echo "<pre>"; print_r($attachments); echo "</pre>"; } add_action('wp_head', 'adjust_background_image');
注意:如果
pw-background是你通过代码自定义注册给媒体库的分类法(非WordPress内置的默认文章分类category),需要替换分类查询逻辑为分类法查询模式,否则会出现分类不生效的问题,示例参数如下:'tax_query' => array( array( 'taxonomy' => '你注册的自定义分类法名称', 'field' => 'slug', 'terms' => 'pw-background', ) )
内容的提问来源于stack exchange,提问作者TARKUS
相关产品推荐
相关产品推荐

