web-dev-qa-db-fra.com

Wordpress arguments_capacité

Je ne sais pas comment comprendre ce qui ne va pas dans mon code. Pourquoi les types de posts personnalisés "Livre" n'apparaissent pas sur mon tableau de bord, je me suis connecté en tant qu'administrateur et j'utilise la dernière version de WordPress installée 3.4.1

Ici avec mon code

function codex_custom_init() {

  $labels = array(
    'name' => _x('Books', 'post type general name'),
    'singular_name' => _x('Book', 'post type singular name'),
    'add_new' => _x('Add New', 'book'),
    'add_new_item' => __('Add New Book'),
    'edit_item' => __('Edit Book'),
    'new_item' => __('New Book'),
    'all_items' => __('All Books'),
    'view_item' => __('View Book'),
    'search_items' => __('Search Books'),
    'not_found' =>  __('No books found'),
    'not_found_in_trash' => __('No books found in Trash'), 
    'parent_item_colon' => '',
    'menu_name' => __('Books')

  );

    $capabilities = array(
    'publish_posts' => 'publish_books',
    'edit_posts' => 'edit_books',
    'edit_others_posts' => 'edit_others_books',
    'delete_posts' => 'delete_books',
    'delete_others_posts' => 'delete_others_books',
    'read_private_posts' => 'read_private_books',
    'edit_post' => 'edit_book',
    'delete_post' => 'delete_book',
    'read_post' => 'read_book'
    );


  $args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true, 
    'show_in_menu' => true, 
    'query_var' => true,
    'rewrite' => true,
    'capability_type' => 'book',
    'capabilities' => $capabilities,
    'has_archive' => true, 
    'hierarchical' => false,
    'menu_position' => null,
    'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
  ); 

  register_post_type('book',$args);

}

add_action( 'init', 'codex_custom_init' );

Mon code est d'ajouter une nouvelle publication personnalisée avec des fonctionnalités personnalisées pour l'utilisation de membres plugin .

2
Gerald

On dirait qu'un CPT avec un type de capacité personnalisé n'apparaîtra pas par défaut, même en tant que super administrateur. Même l'ajout manuel des autorisations pour le rôle d'utilisateur souhaité (licensing-admin dans mon cas) n'a pas abouti. Je devais ajouter manuellement les fonctionnalités pour l'administrateur également, puis tout s'est mis en place.

Coincé ce code dans mon crochet d'activation de plugin et bon aller.

$roles = array( get_role('licensing-admin'), get_role('administrator') );

foreach($roles as $role) {
  if($role) {
    $role->add_cap('edit_license');
    $role->add_cap('read_license');
    $role->add_cap('delete_license');
    $role->add_cap('edit_licenses');
    $role->add_cap('edit_others_licenses');
    $role->add_cap('publish_licenses');
    $role->add_cap('read_private_licenses');
    $role->add_cap('delete_licenses');
    $role->add_cap('delete_private_licenses');
    $role->add_cap('delete_published_licenses');
    $role->add_cap('delete_others_licenses');
    $role->add_cap('edit_private_licenses');
    $role->add_cap('edit_published_licenses');
  }
}
8
trans1t