概要
ure_restrict_edit_post_typeフィルタは、WordPressプラグイン「User Role Editor」に関連しており、特定のユーザーの編集権限を制御するために使用されます。このフィルタを使うことで、管理者が特定の投稿タイプの編集に対して許可または拒否する設定をカスタマイズできます。以下のような機能実装に特によく用いられます。
- 特定のユーザーグループに対する編集権限の制限
- カスタム投稿タイプの編集権限をユーザーによって変更
- 投稿状態(公開、下書きなど)に基づく権限のリミテーション
- マルチサイト環境での投稿権限の制御
- 特定のメタデータに基づいたアクセス制御
- 管理画面のUIをユーザーの役割に応じて変更
構文
add_filter('ure_restrict_edit_post_type', 'your_function_name', 10, 2);
パラメータ
$capability: 現在のユーザーが持つ権限$post_type: 編集しようとしている投稿タイプ
戻り値
- Boolean: 編集を許可する場合は
true、拒否する場合はfalseを返します。
バージョン情報
- User Role Editor: 4.62以降
- WordPress: 4.5以降
この関数のアクションでの使用可能性
| アクション | 使用可能 |
|---|---|
| mu_plugin_loaded | |
| registered_post_type | |
| plugins_loaded | |
| wp_roles_init | |
| setup_theme | |
| after_setup_theme | |
| set_current_user | |
| init | 〇 |
| register_sidebar | |
| wp_loaded | |
| send_headers | |
| parse_query | |
| pre_get_posts | |
| wp | |
| template_redirect | |
| get_header | |
| wp_head |
サンプルコード
サンプルコード1:特定のユーザーグループを制限する
このサンプルコードは、特定のユーザーロールを持つユーザーに対して、特定の投稿タイプ(例:portfolio)の編集を禁止します。
add_filter('ure_restrict_edit_post_type', 'restrict_portfolio_editing', 10, 2);
function restrict_portfolio_editing($capability, $post_type) {
if ($post_type === 'portfolio' && current_user_can('special_role')) {
return false; // 編集を拒否
}
return $capability; // 権限を維持
}
(URL: https://www.example.com/sample-url1)
サンプルコード2:カスタム権限を追加
このコードは、ユーザーがedit_booksというカスタム権限を持っている場合に限り、books投稿タイプの編集を許可します。
add_filter('ure_restrict_edit_post_type', 'allow_edit_books', 10, 2);
function allow_edit_books($capability, $post_type) {
if ($post_type === 'books') {
return current_user_can('edit_books');
}
return $capability;
}
(URL: https://www.example.com/sample-url2)
サンプルコード3:特定の条件に基づいた編集の制限
このサンプルは、投稿メタデータに基づいてユーザーが編集できるかどうかを判断します。
add_filter('ure_restrict_edit_post_type', 'restrict_edit_based_on_meta', 10, 2);
function restrict_edit_based_on_meta($capability, $post_type) {
if ($post_type === 'custom_post' && get_post_meta(get_the_ID(), 'editable', true) !== 'yes') {
return false; // 編集を拒否
}
return $capability;
}
(URL: https://www.example.com/sample-url3)
サンプルコード4:特定の役割のユーザーによる編集の許可
このサンプルコードは、administrator役割を持つユーザーにはevents投稿タイプの編集を許可します。
add_filter('ure_restrict_edit_post_type', 'allow_admin_edit_events', 10, 2);
function allow_admin_edit_events($capability, $post_type) {
if ($post_type === 'events' && current_user_can('administrator')) {
return true; // 編集を許可
}
return $capability;
}
(URL: https://www.example.com/sample-url4)
サンプルコード5:複数の投稿タイプの編集を制限する
このコードは、postおよびpageの編集権限を特定のユーザー役割に制限します。
add_filter('ure_restrict_edit_post_type', 'restrict_editing_for_roles', 10, 2);
function restrict_editing_for_roles($capability, $post_type) {
if (in_array($post_type, ['post', 'page']) && current_user_can('editor')) {
return false; // 編集を拒否
}
return $capability;
}
(URL: https://www.example.com/sample-url5)