カスタマイズされたユーザーロールを指定するためにユーザーロールエディタを使用しています。 Advanced Custom Fieldsプラグインも使用しています。
特定のユーザーに表示されないように高度なカスタムフィールドを非表示にすることができます。ただし、User Role Editorでこれを行う唯一の方法は、[Manage Options]ボックスのチェックを外すことです。これをすることの問題はそれが私が実際にそれらのユーザーのために現れたいと思う他のプラグインを現れさせないことです。
特定のユーザーロールに対して高度なカスタムフィールドのみを削除するように、自分のfunctions.phpに入れることができる手動のコードが少しありますか。このプラグインだけ。
admin_menu
アクションはACFメニューを隠します。この例ではnot-adminsです。
URLが直接アクセスされた場合、admin_head
はアクセスをブロックします。
例:http://example.com/wp-admin/edit.php?post_type=acf
とhttp://example.com/wp-admin/edit.php?post_type=acf&page=acf-settings
add_action( 'admin_menu', 'wpse_59032_remove_acf_menu', 9999 );
add_action( 'admin_head-edit.php', 'wpse_59032_block_acf_screens' );
add_action( 'admin_head-custom-fields_page_acf-settings', 'wpse_59032_block_acf_screens' );
function wpse_59032_remove_acf_menu()
{
/* if not our allowed users, hide menu */
if ( !current_user_can('delete_plugins') ) {
remove_menu_page('edit.php?post_type=acf');
}
}
function wpse_59032_block_acf_screens()
{
global $current_screen;
/* not our screen, do nothing */
if( 'edit-acf' != $current_screen->id && 'custom-fields_page_acf-settings' != $current_screen->id )
return;
/* if not our allowed users, block access */
if ( !current_user_can('delete_plugins') ) {
wp_die('message');
}
}