如何按作者过滤 edit.php 上的帖子
How to filter posts by author on edit.php
假设用户访问了
的页面
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'
的slug 获取作者的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');
查询仍然returns没有元素。我已经 var_dump
ed $query
并且看到 $query->query["author"]
有文本问题,这是一个潜在的问题。此外,$query->tax_query
包含与作者相关的数据。如果这个问题值得否决,我很抱歉,我认为其他人也可能对 Wordpress 的数据库处理感到困惑,因此这个问题可能会有用。也许我错了。
这应该适合你:
get_user_by('slug','john-doe');
编辑:
从这里你可以获得作者对象,你可以继续你的代码。
看到这个-
https://wordpress.stackexchange.com/questions/89990/how-we-can-get-the-author-id-by-its-name
而且,获取作者帖子的更好方法是-
get_posts('author'=>AUTHOR_ID);
WordPress 为您提供了一个 author_name
查询变量。您可以默认使用以下内容:
http://mywpsite/wp-admin/edit.php?author_name=john-doe
详细了解 public 查询变量 in the Codex。
我正在研究 wp 前端并达到与您要求的类似的功能
您提供的代码在 wp-admin 页面上有效,但任何使用该代码的人都会阻止他自己的 SuperAdmin 帐户表单审查其他编辑的帖子。
只需将 !is_super_admin()
添加到您的第一个条件中:-
if($query->is_admin && !is_super_admin() )
顺便说一句,作者的 ID 已经提供 global $user_ID;
当您添加此 $query->set('author',$user_ID);
时,主查询将根据作者 ID 过滤帖子结果,请参阅 WP_Query();
假设用户访问了
的页面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'
的slug 获取作者的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');
查询仍然returns没有元素。我已经 var_dump
ed $query
并且看到 $query->query["author"]
有文本问题,这是一个潜在的问题。此外,$query->tax_query
包含与作者相关的数据。如果这个问题值得否决,我很抱歉,我认为其他人也可能对 Wordpress 的数据库处理感到困惑,因此这个问题可能会有用。也许我错了。
这应该适合你:
get_user_by('slug','john-doe');
编辑: 从这里你可以获得作者对象,你可以继续你的代码。
看到这个-
https://wordpress.stackexchange.com/questions/89990/how-we-can-get-the-author-id-by-its-name
而且,获取作者帖子的更好方法是-
get_posts('author'=>AUTHOR_ID);
WordPress 为您提供了一个 author_name
查询变量。您可以默认使用以下内容:
http://mywpsite/wp-admin/edit.php?author_name=john-doe
详细了解 public 查询变量 in the Codex。
我正在研究 wp 前端并达到与您要求的类似的功能
您提供的代码在 wp-admin 页面上有效,但任何使用该代码的人都会阻止他自己的 SuperAdmin 帐户表单审查其他编辑的帖子。
只需将 !is_super_admin()
添加到您的第一个条件中:-
if($query->is_admin && !is_super_admin() )
顺便说一句,作者的 ID 已经提供 global $user_ID;
当您添加此 $query->set('author',$user_ID);
时,主查询将根据作者 ID 过滤帖子结果,请参阅 WP_Query();