0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WordPressのカスタム投稿タイプで権限を指定する

Posted at

WordPressのカスタム投稿タイプで権限を指定するやり方です。

やりたいこと

カスタム投稿タイプで、投稿者は公開できないようにする

デフォルトの挙動

カスタム投稿タイプは通常の投稿と同様、投稿者は自分で公開することができる

コード

LPというカスタム投稿タイプを作ってみます。

add_action( 'init', 'create_post_type' );
function create_post_type() {

    $lp_capabilities = array(
      'edit_posts' => 'edit_lps', // 自分の投稿を編集する権限
      'edit_others_posts' => 'edit_others_lps', // 他のユーザーの投稿を編集する権限
      'publish_posts' => 'publish_lps', // 投稿を公開する権限
      'read_private_posts' => 'read_private_lps', // プライベート投稿を閲覧する権限
      'delete_posts' => 'delete_lps', // 自分の投稿を削除する権限
      'delete_private_posts' => 'delete_private_lps', // プライベート投稿を削除する権限
      'delete_published_posts' => 'delete_published_lps', // 公開済み投稿を削除する権限
      'delete_others_posts' => 'delete_others_lps', // 他のユーザーの投稿を削除する権限
      'edit_private_posts' => 'edit_private_lps', // プライベート投稿を編集する権限
      'edit_published_posts' => 'edit_published_lps', // 公開済みの投稿を編集する権限
    );
    register_post_type('lp', [
      'labels' => [
          'name'          => 'LP',
          'singular_name' => 'lp',
      ],
      'public'        => true,
      'has_archive'   => true,
      'menu_position' => 8,
      'show_in_rest'  => true,
      'capability_type' => 'lp',
      'capabilities'    => $lp_capabilities,
      'map_meta_cap'    => true
      ]);
}

lp_capabilitiesという変数は、カスタム投稿タイプ個別の権限を作成しています。
例えば、「publish_posts」というのが投稿を公開する権限ですが、LPのカスタム投稿タイプの場合は「publish_lps」という名前で定義します。

アンダーバーの後ろの部分がカスタム投稿タイプの名前(複数形)になっています。

専用の権限を定義しておいて、register_post_type関数でカスタム投稿タイプを作成する時に、「capabilities」で指定して登録します。

投稿者に個別の権限を設定する

ここから先はWordPressのプラグイン「User Role Editor」を使用するのが簡単です。

カスタム投稿タイプ「LP」は独自の権限を定義したので、「User Role Editor」で見ると以下のように上記で指定した名前の権限となっています。
このうち、以下のように「publish_lps」(投稿を公開する権限)のチェックを外して更新すると、権限の設定が完了です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?