質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.59%

WP Toolset Typesでカスタム投稿にcapabilitiesを設定またはカスタム投稿公開後に投稿画面へのリダイレクトを変更したい

受付中

回答 0

投稿

  • 評価
  • クリップ 1
  • VIEW 646

postppo

score 13

 前提・実現したいこと

ワードプレスプラグイン「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のままだった。

$capabilities = array(
    // 自分の投稿を編集する権限
    'edit_posts' => 'edit_customs',
    // 他のユーザーの投稿を編集する権限
    'edit_others_posts' => 'edit_others_customs',
    // 投稿を公開する権限
    'publish_posts' => 'publish_customs',
    // プライベート投稿を閲覧する権限
    'read_private_posts' => 'read_private_customs',
    // 自分の投稿を削除する権限
    'delete_posts' => 'delete_customs',
    // プライベート投稿を削除する権限
    'delete_private_posts' => 'delete_private_customs',
    // 公開済み投稿を削除する権限
    'delete_published_posts' => 'delete_published_customs',
    // 他のユーザーの投稿を削除する権限
    'delete_others_posts' => 'delete_others_customs',
    // プライベート投稿を編集する権限
    'edit_private_posts' => 'edit_private_customs',
    // 公開済みの投稿を編集する権限
    'edit_published_posts' => 'edit_published_customs',
);

register_post_type( 'custom', array(
    'capability_type' => 'custom',
    'capabilities'    => $capabilities,
    'map_meta_cap'    => true,
    'supports' => array( 'title','thumbnail'),
    'show_ui' => true, 
    'label' => 'カスタム',
) );
    // 他のユーザーの投稿を編集する権限
$capabilities = array(
    // 自分の投稿を編集する権限
    'edit_posts' => 'edit_customs',
    // 他のユーザーの投稿を編集する権限
    'edit_others_posts' => 'edit_others_customs',
    // 投稿を公開する権限
    'publish_posts' => 'publish_customs',
    // プライベート投稿を閲覧する権限
    'read_private_posts' => 'read_private_customs',
    // 自分の投稿を削除する権限
    'delete_posts' => 'delete_customs',
    // プライベート投稿を削除する権限
    'delete_private_posts' => 'delete_private_customs',
    // 公開済み投稿を削除する権限
    'delete_published_posts' => 'delete_published_customs',
    // 他のユーザーの投稿を削除する権限
    'delete_others_posts' => 'delete_others_customs',
    // プライベート投稿を編集する権限
    'edit_private_posts' => 'edit_private_customs',
    // 公開済みの投稿を編集する権限
    'edit_published_posts' => 'edit_published_customs',
);

// 管理者に独自権限を付与
$role = get_role( 'administrator' );
foreach ( $capabilities as $cap ) {
    $role->add_cap( $cap );
}

そこからToolset Typesのカスタム投稿「custom」を削除してみたら、今度は固定ページとの紐づけが出来なくなってしまいました。

 補足情報(FW/ツールのバージョンなど)

WordPress 4.9.8
PHP7.0

よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.59%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • トップ
  • PHPに関する質問
  • WP Toolset Typesでカスタム投稿にcapabilitiesを設定またはカスタム投稿公開後に投稿画面へのリダイレクトを変更したい