【问题标题】:How to filter posts by author on edit.php如何在edit.php上按作者过滤帖子
【发布时间】: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');

Source.

但是,这里应该输入作者的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


【解决方案1】:

这应该适合你:

get_user_by('slug','john-doe');

编辑: 从这里你可以得到作者对象,你可以继续你的代码。

Link

【讨论】:

  • 谢谢你,苛刻。我已经尝试过你的答案,但不幸的是,我仍然得到一个空的结果集。我相信查询已经被作为 get 参数接收的作者值污染了。我是 Wordpress 的菜鸟,所以我可能会错过一些非常简单的东西。
  • 是的,我猜$query 已经处理了关于管理员的查询变量。
【解决方案2】:

WordPress 为您提供了一个 author_name 查询变量。您可以默认使用以下内容:

http://mywpsite/wp-admin/edit.php?author_name=john-doe

详细了解公共查询变量in the Codex

【讨论】:

    【解决方案3】:

    我正在使用 wp 前端并达到您所要求的类似功能

    您提供的代码在 wp-admin 页面上是最新的,但任何人使用该代码都会阻止他自己的 SuperAdmin 帐户表单查看其他编辑者的帖子。
    只需将!is_super_admin() 添加到您的第一个条件中,如下所示:-

    if($query->is_admin && !is_super_admin() )

    顺便说一句,global $user_ID; 已经提供了作者的 ID 当您添加此$query->set('author',$user_ID); 时,主查询将根据作者 ID 过滤帖子结果,请参阅WP_Query();

    【讨论】:

      【解决方案4】:

      看这个-

      https://wordpress.stackexchange.com/questions/89990/how-we-can-get-the-author-id-by-its-name

      而且,获取作者帖子的更好方法是-

      get_posts('author'=>AUTHOR_ID);
      

      【讨论】:

        猜你喜欢
        • 2021-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-26
        • 2016-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多