質問: get_role($the_role); $role->add_cap( 'read' ); $role->add_cap( 'read_blog'); $role->add_cap( 'read_private_blog' ); $role->add_cap( 'edit_blog' ); $role->add_cap( 'edit_others_blog' ); $role->add_cap( 'edit_published_blog' ); $role->add_cap( 'publish_blog' ); $role->add_cap( 'delete_others_blog' ); $role->add_cap( 'delete_private_blog' ); $role->add_cap( 'delete_published_blog' ); } } add_action('admin_init', 'add_blog_role_caps', 5 ); その原因を突き止めようと必死でグーグルしています。私は複数型、非複数型のキャップを試し、post型の引数に機能を追加してみました。しかし、私は決してバックエンドに入ることができません。ユーザーを管理者から追い出す可能性のある他のコードをテーマ内に持っていません(これをテストしている間に自分を追い出したコードを削除しました)。 編集 ここでデータベースからのblog_manager機能のダンプを見ることができます、そこに残っているbsのテストのかなりのビットがあります、彼らが私が知っていることからログインできないのを止めるべきではない。'blog_manager' => array ( 'name' => 'blog manager', 'capabilities' => array ( 'read' => true, 'edit_posts' => false, 'delete_posts' => false, 'publish_posts' => false, 'upload_files' => true, 'read_blog' => true, 'read_private_blog' => true, 'edit_blog' => true, 'edit_others_blog' => true, 'edit_published_blog' => true, 'publish_blog' => true, 'delete_others_blog' => true, 'delete_private_blog' => true, 'delete_published_blog' => true, 'blog' => true, 'read_private_blogs' => true, 'edit_blogs' => true, 'edit_others_blogs' => true, 'edit_published_blogs' => true, 'publish_blogs' => true, 'delete_others_blogs' => true, 'delete_private_blogs' => true, 'delete_published_blogs' => true, 'delete_blogs' => true, 'delete_blog' => true, ), )
回答: 上記のコードは実際のコードの一部にすぎないため、トラブルシューティングは困難ですが、カスタム投稿タイプ(exampleと呼ばれる)とカスタムロール(blog manager)を登録するために必要な最小限のプラグイン。これはテーマのfunctions.phpファイルの一部としても使えます。代わりにテーマの有効化および無効化フックを使用してください。<?php /** * plugin name: wpse 186337 * description: debug wordpress stackexchange question 186337 * plugin uri: https://wordpress.stackexchange.com/questions/186337/ * author: nathan johnson * licence: gpl2+ * licence uri: https://www.gnu.org/licenses/gpl-2.0.en.html */ //* don't access this file directly defined( 'abspath' ) or die(); //* add action to init to register custom post type add_action( 'init', 'se186337_init' ); //* register activation hook to add blog manager role register_activation_hook( __file__ , 'se186337_activation' ); //* register deactivation hook to remove blog manager role register_deactivation_hook( __file__ , 'se186337_deactivation' ); function se186337_activation() { $caps = [ //* meta capabilities 'read' => true, 'edit_blog' => true, 'read_blog' => true, 'delete_blog' => true, //* primitive capabilities used outside of map_meta_cap() 'edit_blogs' => true, 'edit_others_blogs' => true, 'publish_blogs' => true, 'read_private_blogs' => true, //* primitive capabilities used within of map_meta_cap() 'delete_blogs' => true, 'delete_private_blogs' => true, 'delete_published_blogs' => true, 'delete_others_blogs' => true, 'edit_private_blogs' => true, 'edit_published_blogs' => true, ]; add_role( 'blog_manager', 'blog manager', $caps ); } function se186337_deactivation() { remove_role( 'blog_manager' ); } function se186337_init() { $labels = [ 'name' => __( 'examples' ), 'singular_name' => __( 'example' ), ]; $args = [ 'labels' => $labels, 'public' => true, 'has_archive' => true, 'capability_type' => 'blog', 'map_meta_cap' => true, ]; register_post_type( 'examples', $args ); }