假设用户访问
页面http://mywpsite/wp-admin/edit.php?author=john-doe
假设有一位名为'John Doe'
的作者,而且给定的作者有三个帖子。然而,当我访问该页面时,我看到一个空格,好像没有该作者创建的帖子。
我想搜索给定用户创建的帖子。根据我的研究,我可以看到人们声称这样的事情应该有效:
function posts_for_current_author($query) {
if($query->is_admin) {
global $user_ID;
$query->set('author', $user_ID);
}
return $query;
}
add_filter('pre_get_posts', 'posts_for_current_author');
但是,这里作者的ID是预期的输入,但是,我不知道如何通过'john-doe'
的段落来获取作者的ID。
如何通过slug获取作者的ID并根据该ID搜索帖子?
编辑:
这是一次失败的尝试,基于NATH的评论:
function wpshock_search_filter( $query ) {
if ((is_admin()) && (isset($_GET["author"])) && (preg_match('/[^a-zA-Z_0-9]/i', $_GET["author"]))) {
$query->set("author_name", $_GET["author"]);
}
return $query;
}
add_filter('pre_get_posts','wpshock_search_filter');
查询仍然不返回任何元素。我var_dump
编辑$query
并看到$query->query["author"]
有文字问题,这是一个潜在的问题。此外,$query->tax_query
包含与作者相关的数据。我很抱歉,如果这个问题值得投票,我认为其他人也可能会被Wordpress的数据库处理所困惑,因此这个问题可能会有用。也许我错了。
答案 0 :(得分:2)
答案 1 :(得分:1)
WordPress为您提供author_name
查询变量。您可以默认使用以下内容:
http://mywpsite/wp-admin/edit.php?author_name=john-doe
详细了解公共查询变量in the Codex。
答案 2 :(得分:1)
我正在wp前端wotking并达到你所要求的类似功能
您提供的代码是wp-admin页面上的当前代码,但是任何人都使用该代码来阻止他自己的SuperAdmin帐户表单查看其他编辑帖子。
只需将!is_super_admin()
添加到您的第一个会议中,如下所示: -
if($query->is_admin && !is_super_admin() )
BTW作者的ID已经提供global $user_ID;
当您添加此$query->set('author',$user_ID);
时,主查询会过滤发布作者ID的帖子结果,请参阅WP_Query();
答案 3 :(得分:0)
见这 -
https://wordpress.stackexchange.com/questions/89990/how-we-can-get-the-author-id-by-its-name
而且,作者获得帖子的更好方法是 -
get_posts('author'=>AUTHOR_ID);