用于更改编辑帖子作者框中的作者列表的 WordPress 过滤器

Posted

技术标签:

【中文标题】用于更改编辑帖子作者框中的作者列表的 WordPress 过滤器【英文标题】:WordPress Filter for changing author list in edit post Authors box 【发布时间】:2016-09-11 20:33:25 【问题描述】:

我想在编辑帖子页面上的作者选择下拉列表中更改自定义帖子类型的用户列表。我可以使用过滤器挂钩吗?我还没有找到任何关于过滤钩子的信息,它可以满足我的需求。

钩子应该(理论上)让我返回一个用户数组,这些用户将填充底部的选择框。我想这样做的原因是我可以根据用户的角色有条件地过滤掉不同帖子类型的用户。作为管理员(或其他管理员),我不想在将用户设为作者之前检查用户是否具有特定角色。

代码示例:

add_filter('example_filter', 'my_custom_function');
function my_custom_function ( $users )

    // Get users with role 'my_role' for post type 'my_post_type'
    if( 'my_post_type' == get_post_type() )
        $users = get_users( ['role' => 'my_role'] );
    

    // Get users with role 'other_role' for post type 'other_post_type'
    if( 'other_post_type' == get_post_type() )
        $users = get_users( ['role' => 'other_role'] );
    

    return $users;

【问题讨论】:

我们可以看看你的代码吗? 不知道为什么这个问题被否决了...更新了这个问题,提供了更多的说明和细节以及一些示例代码。我现在的主题中没有任何代码,因为我没有过滤器可以连接。 【参考方案1】:

你可以使用钩子'wp_dropdown_users_args'。

在你的主题的functions.php文件中添加下面的代码sn-p。

add_filter( 'wp_dropdown_users_args', 'change_user_dropdown', 10, 2 );

function change_user_dropdown( $query_args, $r )
// get screen object
$screen = get_current_screen();

// list users whose role is e.g. 'Editor' for 'post' post type
if( $screen->post_type == 'post' ):
    $query_args['role'] = array('Editor');

    // unset default role 
    unset( $query_args['who'] );
endif;

// list users whose role is e.g. 'Administrator' for 'page' post type
if( $screen->post_type == 'page' ):
    $query_args['role'] = array('Administrator');

    // unset default role 
    unset( $query_args['who'] );
endif;

return $query_args;

让我知道这是否适合你。

【讨论】:

谢谢!!已经有一段时间了,但这正是我一直在寻找的东西! 谢谢,我已经为多个用户角色添加了['role_in'] 参数。

以上是关于用于更改编辑帖子作者框中的作者列表的 WordPress 过滤器的主要内容,如果未能解决你的问题,请参考以下文章

sql SQL:在所有帖子上更改作者归属

通过单选按钮更改 Jquery 表单提交

redis能做什么

如果作者对前端进行了微小的更改,则 Joomla 中的 k2 篇文章将变为未发布

如何在不更改日期的情况下编辑提交作者?

redis应用场景