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

问题描述 投票:0回答:2

我想更改自定义帖子类型编辑帖子页面上“作者选择”下拉列表中的用户列表。我可以使用过滤器挂钩吗?我无法找到任何有关过滤器挂钩的信息来满足我的要求。

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

代码示例:

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;
}
php wordpress custom-post-type wordpress-hook
2个回答
5
投票

您可以使用挂钩“wp_dropdown_users_args”。

在主题的functions.php 文件中添加以下代码片段。

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;
}

让我知道这是否适合您。


0
投票

我想在编辑页面(帖子类型 ='page')的作者下拉列表中显示所有用户,并且只有当我以管理员角色类型用户身份登录时,这些所有用户才会显示。

© www.soinside.com 2019 - 2024. All rights reserved.