私は新しいユーザロールを作成し、いくつかのデフォルトを削除するための関数を使っています。しかし、投稿作家ボックスには表示されません。管理者として選択されているため、管理者のみが表示されます。カスタムロールを持つユーザーは表示されません。なぜこれが起こっているのでしょうか?
これが私の機能です:
// Add New User Roles
function add_new_roles() {
// New Roles To Be Added
$new_roles = array(
array(
'role' => 'senior_pastor',
'display' => 'Senior Pastor'
),
array(
'role' => 'exec_pastor',
'display' => 'Executive Pastor'
),
array(
'role' => 'assoc_pastor',
'display' => 'Associate Pastor'
),
array(
'role' => 'elder',
'display' => 'Elder'
),
array(
'role' => 'ministry_leader',
'display' => 'Ministry Leader'
)
);
foreach($new_roles as $role){
add_role($role['role'], $role['display'], array(
'edit_published_posts' => true,
'upload_files' => true,
'create_product' => true,
'publish_posts' => true,
'delete_published_posts' => true,
'edit_posts' => true,
'delete_posts' => true,
'read' => true
));
}
// Old Roles To Be Removed
$old_roles = array(
'subscriber',
'contributor',
'author'
'editor'
);
foreach($old_roles as $role){
remove_role( $role );
}
}
add_action('after_switch_theme', 'add_new_roles');
下記の回避策を見つけました。私はそれがWordpressのコアのバグと関係があると思います。これは投稿内のすべてのユーザーをリストしますので、注意が必要です。
// Filter to fix the Post Author Dropdown
function author_override( $output ) {
global $post, $user_ID;
// return if this isn't the theme author override dropdown
if (!preg_match('/post_author_override/', $output)) return $output;
// return if we've already replaced the list (end recursion)
if (preg_match ('/post_author_override_replaced/', $output)) return $output;
// replacement call to wp_dropdown_users
$output = wp_dropdown_users(array(
'echo' => 0,
'name' => 'post_author_override_replaced',
'selected' => empty($post->ID) ? $user_ID : $post->post_author,
'include_selected' => true
));
// put the original name back
$output = preg_replace('/post_author_override_replaced/', 'post_author_override', $output);
return $output;
}
add_filter('wp_dropdown_users', 'author_override');
クレジットは ここ に行く
はい、確かに、チケット #16841 で報告されているように、それはバグです。
3.6-beta3でテストしてもまだ問題はありません。回避策は scribuの言葉の中です :
[...]にaを追加
level_1
自分の役割に制限するこれはPITAです。ユーザーレベルがこれまでずっと廃止されてきた方法を考えると、でもそこに行きます。
そして...それは宣伝どおりに動作します;)
参考までに、これらはコアでwp_dropdown_users
が発生する場所です。