前提・実現したいこと
ワードプレスプラグイン「Toolset Types」で作成したカスタム投稿タイプにcapabilitiesを設定して通常の投稿「post」と権限を分けたい
もしくは、カスタム投稿を公開した後に自動で通常の投稿一覧画面へリダイレクトしないようにしたい。
Toolset Typesを使う理由はカスタム投稿タイプと固定ページとを親子関係で紐づけたいからです。
サイトのシステムとしては登録ユーザー(寄稿者)がカスタム投稿(custom)を投稿し固定ページと紐づけて公開できるようにすることを想定しています。
寄稿者の権限はUser Role Editorプラグインで設定しています。
発生している問題・エラーメッセージ
管理者以外は通常の投稿が出来ないようにしたいが、Toolset Typesで作成したカスタム投稿タイプは投稿タイプがデフォルトで「post」になっていてcapabilitiesを設定する方法が分からない。
管理者以外には通常の投稿の新規追加と編集の項目は管理画面のサイドバーやメニューから消しているが、カスタム投稿を公開後に通常の投稿一覧画面にリダイレクトしてしまう。
通常の投稿とカスタム投稿のcapabilitiesが同じなのでそこから寄稿者が通常の投稿を作成できてしまう。
試したこと
テスト用のwpでカスタム投稿タイプ"cutom"をToolset Typesで作成した後にfunction.phpに以下を記載した所、User Role Editorからcustomsの権限を設定できるようになったが元々のカスタム投稿はpostのままだった。
php
1$capabilities = array( 2 // 自分の投稿を編集する権限 3 'edit_posts' => 'edit_customs', 4 // 他のユーザーの投稿を編集する権限 5 'edit_others_posts' => 'edit_others_customs', 6 // 投稿を公開する権限 7 'publish_posts' => 'publish_customs', 8 // プライベート投稿を閲覧する権限 9 'read_private_posts' => 'read_private_customs', 10 // 自分の投稿を削除する権限 11 'delete_posts' => 'delete_customs', 12 // プライベート投稿を削除する権限 13 'delete_private_posts' => 'delete_private_customs', 14 // 公開済み投稿を削除する権限 15 'delete_published_posts' => 'delete_published_customs', 16 // 他のユーザーの投稿を削除する権限 17 'delete_others_posts' => 'delete_others_customs', 18 // プライベート投稿を編集する権限 19 'edit_private_posts' => 'edit_private_customs', 20 // 公開済みの投稿を編集する権限 21 'edit_published_posts' => 'edit_published_customs', 22); 23 24register_post_type( 'custom', array( 25 'capability_type' => 'custom', 26 'capabilities' => $capabilities, 27 'map_meta_cap' => true, 28 'supports' => array( 'title','thumbnail'), 29 'show_ui' => true, 30 'label' => 'カスタム', 31) ); 32 // 他のユーザーの投稿を編集する権限 33$capabilities = array( 34 // 自分の投稿を編集する権限 35 'edit_posts' => 'edit_customs', 36 // 他のユーザーの投稿を編集する権限 37 'edit_others_posts' => 'edit_others_customs', 38 // 投稿を公開する権限 39 'publish_posts' => 'publish_customs', 40 // プライベート投稿を閲覧する権限 41 'read_private_posts' => 'read_private_customs', 42 // 自分の投稿を削除する権限 43 'delete_posts' => 'delete_customs', 44 // プライベート投稿を削除する権限 45 'delete_private_posts' => 'delete_private_customs', 46 // 公開済み投稿を削除する権限 47 'delete_published_posts' => 'delete_published_customs', 48 // 他のユーザーの投稿を削除する権限 49 'delete_others_posts' => 'delete_others_customs', 50 // プライベート投稿を編集する権限 51 'edit_private_posts' => 'edit_private_customs', 52 // 公開済みの投稿を編集する権限 53 'edit_published_posts' => 'edit_published_customs', 54); 55 56// 管理者に独自権限を付与 57$role = get_role( 'administrator' ); 58foreach ( $capabilities as $cap ) { 59 $role->add_cap( $cap ); 60}
そこからToolset Typesのカスタム投稿「custom」を削除してみたら、今度は固定ページとの紐づけが出来なくなってしまいました。
補足情報(FW/ツールのバージョンなど)
WordPress 4.9.8
PHP7.0
よろしくお願いします。
あなたの回答
tips
プレビュー