私のWordPressインストール(4.9.8.)
では、編集者ロールはプライバシーページを編集することを許可されていません。
それは私のfunctions.php
の中で次のように動作します:
$role_object = get_role( 'editor' );
$role_object->add_cap( 'manage_privacy_options', true );
$role_object->add_cap( 'manage_options' ); // this needs to be active in order that before cap works
しかし今では、編集者には単にプライバシーページを編集するよりもはるかに多くの権利があります。
何行かのPHPコードを使用してgrant access to the editor user role
を作成する別の方法はありますか?
回避策として、私は今このプラグインを使用しています: https://wordpress.org/plugins/manage-privacy-options/
別の種類の回避策は、プライバシー設定でプライバシーページを選択しないことです。
プライバシーポリシーページの編集は、WordPressコアファイルmanage_privacy_options
のコメントで指摘されているようにwp-includes/capabilities.php
に制限されています。
/*
* Setting the privacy policy page requires `manage_privacy_options`,
* so editing it should require that too.
*/
if ( (int) get_option( 'wp_page_for_privacy_policy' ) === $post->ID ) {
$caps = array_merge( $caps, map_meta_cap( 'manage_privacy_options', $user_id ) );
}
ロールeditor
およびadministrator
(単一サイトおよび複数サイトのインスタンス)を持つユーザーがプライバシーポリシーページを編集および削除できるようにするには、$caps
配列を上書きする必要があります。
add_action('map_meta_cap', 'custom_manage_privacy_options', 1, 4);
function custom_manage_privacy_options($caps, $cap, $user_id, $args)
{
if ('manage_privacy_options' === $cap) {
$manage_name = is_multisite() ? 'manage_network' : 'manage_options';
$caps = array_diff($caps, [ $manage_name ]);
}
return $caps;
}