2016-05-16 74 views
0

我想在編輯帖子頁面的作者選擇下拉列表中更改自定義帖子類型的用戶列表。有沒有我可以使用的過濾器鉤子?我一直無法找到任何我想要的濾波器鉤子上的信息。WordPress在編輯帖子中更改作者列表的過濾器作者框

掛鉤應該(理論上)讓我返回一個用戶數組,這些將是填充底部選擇框的用戶。我想這樣做的原因是我可以有條件地篩選出不同職位類型的用戶。作爲管理員(或其他管理員),我不想在將用戶作爲作者之前檢查用戶是否具有某種角色。的代碼

實施例:

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

我們可以看到你的代碼嗎? – surajsn

+1

不知道爲什麼這個問題得到了downvoted ...更多的問題與一些更多的澄清和細節以及一些示例代碼。我現在沒有任何代碼在我的主題中,但是因爲我沒有過濾器來連接。 –

回答

0

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

讓我知道這是否適用於您。

相關問題