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

时间:2016-05-16 05:40:51

标签: php wordpress custom-post-type wordpress-hook

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

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

代码示例:

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 个答案:

答案 0 :(得分:1)

你可以使用hook'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;
}

请告诉我这是否适合您。