WordPress自定义文章获取异常:仅返回9篇,共30篇求助
解决WP_Query仅返回部分自定义文章的问题
嘿,我来帮你排查下这个问题!你现在只能拿到9篇文章,核心原因是WordPress的WP_Query有个默认限制——它默认最多返回10篇已发布状态的文章,你看到9篇大概率是有一篇文章处于草稿、私密这类非发布状态,没被默认查询包含进去。要获取全部30篇文章,只需要调整查询参数即可:
修改后的代码
// 初始化标题数组,避免未定义变量警告 $post_titles = array(); $post_ids = new WP_Query(array( 'post_type' => 'sample', 'fields' => 'ids', 'posts_per_page' => -1, // 关键参数:设置为-1可获取所有符合条件的文章 'post_status' => 'publish' // 可选:明确指定只获取已发布文章,如需其他状态可改为数组,比如array('publish', 'draft') )); if ($post_ids->have_posts()): foreach( $post_ids->posts as $id ): $post_titles[] = apply_filters('the_title', get_the_title($id)); endforeach; endif; // 重置查询,避免干扰后续WordPress的全局查询 wp_reset_postdata();
额外注意事项
posts_per_page设为-1会返回所有匹配的文章,但如果你的文章数量极大(比如上千篇),可能会拖慢页面加载速度,这种情况建议使用分页逻辑或者限制返回数量。- 如果需要包含非发布状态的文章(比如草稿、私密文章),可以把
post_status参数改成数组形式,例如array('publish', 'draft', 'private')。 - 记得提前初始化
$post_titles数组,否则当没有匹配文章时,后续使用这个变量会触发PHP的未定义变量警告。
内容的提问来源于stack exchange,提问作者user9426983
相关产品推荐
相关产品推荐

