【发布时间】:2016-01-10 01:07:30
【问题描述】:
假设用户访问的页面
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');
查询仍然没有返回任何元素。我有var_dumped $query 并看到$query->query["author"] 有文本问题,这是一个潜在的问题。此外,$query->tax_query 包含与作者相关的数据。如果这个问题值得否决,我很抱歉,我认为其他人可能也会对 Wordpress 的数据库处理感到困惑,因此这个问题可能很有用。也许我错了。
【问题讨论】:
-
如果您已经拥有
user_nicename,则可以使用$query->set('author_name', $user_nicename);而不是获取ID。
标签: php wordpress filter filtering