在 wordpress 中使用 `get_posts()` 按作者名称查询文章时,需使用 `author_name` 参数(传入 `user_nicename`),而非 `author`(仅接受整数型用户 id);否则将忽略条件,返回所有作者的文章。
WordPress 的 WP_Query 及其封装函数(如 get_posts())对作者筛选提供了两个关键参数:
✅ 正确用法示例:
$posts = get_posts([
'post_type' => $param['post_type'] ?? 'post',
'author_name' => $param['author'] ?? '', // 传入 user_nicename,如 'emma-watson'
'orderby' => $param['orderby'] ?? 'date',
'order' => strtoupper($param['order']) === 'ASC' ? 'ASC' : 'DESC',
'posts_per_page' => (int) ($param['posts_per_page'] ?? 10),
]);⚠️ 注意事项:
调试技巧:启用 WP_DEBUG_LOG 并打印 $wpdb->last_query,可快速确认 SQL 是否包含 AND wp_users.user_nicename = 'xxx'。? 扩展建议:若需支持按显示名、邮箱或昵称模糊搜索,应改用 WP_User_Query 先获取 ID,再传给 author 参数,以保持查询高效性。