Capibilities of CPT WordPress

时间:2017-05-29 作者:MTB Lover

我创建了3种不同的自定义帖子类型,我需要在后端,这只能由管理员用户角色和我的自定义用户角色(mmv\\u multi\\u vendor)进行编辑。

我设置了代码的功能,但我有一个问题。所有角色为“mmv\\u multi\\u vendor”的用户都可以从后端查看3个CPT,但具有“administrator”角色的用户只能在后端查看CPT名称“Resi”。

这是我的代码:

/*CPT*/
/* Condizioni di Vendita */
add_action(\'init\', \'crea_condizioni\'); #[1]
function crea_condizioni() {
    $labels = array(
        \'name\'               => __(\'Archivio Condizioni\'),
        \'singular_name\'      => __(\'Condizioni di Vendita\'),
        \'add_new\'            => __(\'Aggiungi Condizioni di Vendita\'),
        \'add_new_item\'       => __(\'Nuova Condizione di Vendita\'),
        \'edit_item\'          => __(\'Modifica Condizione di Vendita\'),
        \'new_item\'           => __(\'Nuova Codizione di Vendita\'),
        \'all_items\'          => __(\'Elenco Condizioni di Vendita\'),
        \'view_item\'          => __(\'Visualizza Condizione di Vendita\'),
        \'search_items\'       => __(\'Cerca Condizione di Vendita\'),
        \'not_found\'          => __(\'Condizione di Vendita non tovata\'),
        \'not_found_in_trash\' => __(\'Condizione di Vendita non trovata nel cestino\'),
    );
    $args = array(
        \'labels\'             => $labels, # [2]
        \'public\'             => true,    # [3]
        \'publicly_queryable\' => true,
        \'show_ui\' => true, 
        \'query_var\' => true,
        \'capability_type\' => \'post\',
        \'rewrite\'            => array(\'slug\' => \'condizioni\'), # [4]
        \'has_archive\'        => \'salmi\', # [5]
        \'hierarchical\'       => false, # [6]
        \'menu_position\'      => 5, # [7]
        \'menu_icon\'           => \'\',
        \'supports\' => array( \'title\', \'editor\' ),
        \'map_meta_cap\' => true,
        \'capability_type\' => array(\'crea_condizioni\',\'crea_condizionis\'),
    );
   register_post_type(\'condizioni\', $args); #[9]
}
/* Condizioni Spedizione */
add_action(\'init\', \'crea_spedizioni\'); #[1]
function crea_spedizioni() {
    $labels = array(
        \'name\'               => __(\'Condizioni di Spedizione\'),
        \'singular_name\'      => __(\'Condizioni di Spedizione\'),
        \'add_new\'            => __(\'Aggiungi Condizione di Spedizione\'),
        \'add_new_item\'       => __(\'Nuova Condizione di Spedizione\'),
        \'edit_item\'          => __(\'Modifica Condizione di Spedizione\'),
        \'new_item\'           => __(\'Nuova Condizione di Spedizione\'),
        \'all_items\'          => __(\'Elenco Condizioni di Spedizione\'),
        \'view_item\'          => __(\'Visualizza Condizione di Spedizione\'),
        \'search_items\'       => __(\'Cerca Condizione di Spedizione\'),
        \'not_found\'          => __(\'Condizione di Spedizione non trovata\'),
        \'not_found_in_trash\' => __(\'Condizione di Spedizione non trovata nel cestino\'),
    );
    $args = array(
        \'labels\'             => $labels, # [2]
        \'public\'             => true,    # [3]
        \'rewrite\'            => array(\'slug\' => \'spedizioni\'), # [4]
        \'has_archive\'        => true, # [5]
        \'hierarchical\'       => false, # [6]
        \'menu_position\'      => 6, # [7]
        \'menu_icon\'           => \'\',
        \'supports\' => array( \'title\', \'editor\' ),
        \'map_meta_cap\' => true,
        \'capability_type\' => array(\'crea_spedizioni\',\'crea_spedizionis\'),
    );
   register_post_type(\'spedizioni\', $args); #[9]
}
/* Resi e Rimborsi */
add_action(\'init\', \'crea_resi\'); #[1]
function crea_resi() {
    $labels = array(
        \'name\'               => __(\'Resi e Rimborsi\'),
        \'singular_name\'      => __(\'Resi e Rimborsi\'),
        \'add_new\'            => __(\'Aggiungi Condizoni Resi e Rimborsi\'),
        \'add_new_item\'       => __(\'Nuova Condizione Resi e Rimborsi\'),
        \'edit_item\'          => __(\'Modifica Condizione Resi e Rimborsi\'),
        \'new_item\'           => __(\'Nuova Condizione Resi e Rimborsi\'),
        \'all_items\'          => __(\'Elenco Condizioni Resi e Rimborsi\'),
        \'view_item\'          => __(\'Visualizza Condizioni Resi e Rimborsi\'),
        \'search_items\'       => __(\'Cerca Condizioni Resi e Rimborsi\'),
        \'not_found\'          => __(\'Nessuna Condizione Resi e Rimborsi trovata\'),
        \'not_found_in_trash\' => __(\'Nessuna Resi e Rimborsi trovata nel cestino\'),
    );
    $args = array(
        \'labels\'             => $labels, # [2]
        \'public\'             => true,    # [3]
        \'rewrite\'            => array(\'slug\' => \'resi\'), # [4]
        \'has_archive\'        => true, # [5]
        \'hierarchical\'       => false, # [6]
        \'menu_position\'      => 7, # [7]
        \'menu_icon\'           => \'\',
        \'supports\' => array( \'title\', \'editor\' ),
        \'map_meta_cap\' => true,
        \'capability_type\' => array(\'crea_resi\',\'crea_resis\'),
    );
   register_post_type(\'resi\', $args); #[9]
}

// Caopibility Role

 add_action( \'init\', \'add_bounty_product_caps\');
    function add_bounty_product_caps() {
        global $wp_roles;

        if ( isset($wp_roles) ) {

          $wp_roles->add_cap( \'administrator\', \'edit_crea_resi\' ); 
          $wp_roles->add_cap( \'administrator\', \'edit_crea_resis\' ); 
          $wp_roles->add_cap( \'administrator\', \'edit_others_crea_resis\' ); 
          $wp_roles->add_cap( \'administrator\', \'publish_crea_resis\' ); 
          $wp_roles->add_cap( \'administrator\', \'read_crea_resi\' ); 
          $wp_roles->add_cap( \'administrator\', \'read_private_crea_resis\' ); 
          $wp_roles->add_cap( \'administrator\', \'delete_crea_resi\' ); 
          $wp_roles->add_cap( \'administrator\', \'edit_published_crea_resis\' );
          $wp_roles->add_cap( \'administrator\', \'delete_published_crea_resis\' );

          $wp_roles->add_cap( \'administrator\', \'edit_crea_spedizioni\' ); 
          $wp_roles->add_cap( \'administrator\', \'edit_crea_spedizionis\' ); 
          $wp_roles->add_cap( \'administrator\', \'edit_others_crea_spedizionis\' ); 
          $wp_roles->add_cap( \'administrator\', \'publish_crea_spedizionis\' ); 
          $wp_roles->add_cap( \'administrator\', \'read_crea_spedizioni\' ); 
          $wp_roles->add_cap( \'administrator\', \'read_private_crea_spedizionis\' ); 
          $wp_roles->add_cap( \'administrator\', \'delete_crea_spedizioni\' ); 
          $wp_roles->add_cap( \'administrator\', \'edit_published_crea_spedizionis\' );
          $wp_roles->add_cap( \'administrator\', \'delete_published_crea_spedizionis\' );

          $wp_roles->add_cap( \'administrator\', \'edit_crea_condizioni\' ); 
          $wp_roles->add_cap( \'administrator\', \'edit_crea_condizionis\' ); 
          $wp_roles->add_cap( \'administrator\', \'edit_others_crea_condizionis\' ); 
          $wp_roles->add_cap( \'administrator\', \'publish_crea_condizionis\' ); 
          $wp_roles->add_cap( \'administrator\', \'read_crea_condizioni\' ); 
          $wp_roles->add_cap( \'administrator\', \'read_private_crea_condizionis\' ); 
          $wp_roles->add_cap( \'administrator\', \'delete_crea_condizioni\' ); 
          $wp_roles->add_cap( \'administrator\', \'edit_published_crea_condizionis\' );
          $wp_roles->add_cap( \'administrator\', \'delete_published_crea_condizionis\' );

          $wp_roles->add_cap( \'mmv_multi_vendor\', \'edit_crea_resi\' ); 
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'edit_crea_resis\' ); 
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'edit_others_crea_resis\' ); 
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'publish_crea_resis\' ); 
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'read_crea_resi\' ); 
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'read_private_crea_resis\' ); 
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'delete_crea_resi\' ); 
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'edit_published_crea_resis\' );
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'delete_published_crea_resis\' );

          $wp_roles->add_cap( \'mmv_multi_vendor\', \'edit_crea_spedizioni\' ); 
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'edit_crea_spedizionis\' ); 
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'edit_others_crea_spedizionis\' ); 
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'publish_crea_spedizionis\' ); 
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'read_crea_spedizioni\' ); 
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'read_private_crea_spedizionis\' ); 
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'delete_crea_spedizioni\' ); 
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'edit_published_crea_spedizionis\' );
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'delete_published_crea_spedizionis\' );

          $wp_roles->add_cap( \'mmv_multi_vendor\', \'edit_crea_condizioni\' ); 
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'edit_crea_condizionis\' ); 
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'edit_others_crea_condizionis\' ); 
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'publish_crea_condizionis\' ); 
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'read_crea_condizioni\' ); 
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'read_private_crea_condizionis\' ); 
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'delete_crea_condizioni\' ); 
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'edit_published_crea_condizionis\' );
          $wp_roles->add_cap( \'mmv_multi_vendor\', \'delete_published_crea_condizionis\' );

        }
  }
我也尝试只使用

 add_action( \'init\', \'add_bounty_product_caps\');
    function add_bounty_product_caps() {
        global $wp_roles;

        if ( isset($wp_roles) ) {

          $role = get_role( \'mmv_multi_vendor\' );

          $role->add_cap( \'edit_crea_resi\' ); 
          $role->add_cap( \'edit_crea_resis\' ); 
          $role->add_cap( \'edit_others_crea_resis\' ); 
          $role->add_cap( \'publish_crea_resis\' ); 
          $role->add_cap( \'read_crea_resi\' ); 
          $role->add_cap( \'read_private_crea_resis\' ); 
          $role->add_cap( \'delete_crea_resi\' ); 
          $role->add_cap( \'edit_published_crea_resis\' );
          $role->add_cap( \'delete_published_crea_resis\' );

          $role->add_cap( \'edit_crea_spedizioni\' ); 
          $role->add_cap( \'edit_crea_spedizionis\' ); 
          $role->add_cap( \'edit_others_crea_spedizionis\' ); 
          $role->add_cap( \'publish_crea_spedizionis\' ); 
          $role->add_cap( \'read_crea_spedizioni\' ); 
          $role->add_cap( \'read_private_crea_spedizionis\' ); 
          $role->add_cap( \'delete_crea_spedizioni\' ); 
          $role->add_cap( \'edit_published_crea_spedizionis\' );
          $role->add_cap( \'delete_published_crea_spedizionis\' );

          $role->add_cap( \'edit_crea_condizioni\' ); 
          $role->add_cap( \'edit_crea_condizionis\' ); 
          $role->add_cap( \'edit_others_crea_condizionis\' ); 
          $role->add_cap( \'publish_crea_condizionis\' ); 
          $role->add_cap( \'read_crea_condizioni\' ); 
          $role->add_cap( \'read_private_crea_condizionis\' ); 
          $role->add_cap( \'delete_crea_condizioni\' ); 
          $role->add_cap( \'edit_published_crea_condizionis\' );
          $role->add_cap( \'delete_published_crea_condizionis\' );
    }   
但一切都没有改变。

感谢所有人

1 个回复
SO网友:Cedon

添加自定义功能应使用\'admin_init\'

您的函数可以如下所示:

function add_bounty_product_caps() {
    $role = get_role( \'mmv_multi_vendor\' );

    $role->add_cap( \'edit_crea_resi\' ); 
    $role->add_cap( \'edit_crea_resis\' ); 
    $role->add_cap( \'edit_others_crea_resis\' ); 
    $role->add_cap( \'publish_crea_resis\' ); 
    $role->add_cap( \'read_crea_resi\' ); 
    $role->add_cap( \'read_private_crea_resis\' ); 
    $role->add_cap( \'delete_crea_resi\' ); 
    $role->add_cap( \'edit_published_crea_resis\' );
    $role->add_cap( \'delete_published_crea_resis\' );

    $role->add_cap( \'edit_crea_spedizioni\' ); 
    $role->add_cap( \'edit_crea_spedizionis\' ); 
    $role->add_cap( \'edit_others_crea_spedizionis\' ); 
    $role->add_cap( \'publish_crea_spedizionis\' ); 
    $role->add_cap( \'read_crea_spedizioni\' ); 
    $role->add_cap( \'read_private_crea_spedizionis\' ); 
    $role->add_cap( \'delete_crea_spedizioni\' ); 
    $role->add_cap( \'edit_published_crea_spedizionis\' );
    $role->add_cap( \'delete_published_crea_spedizionis\' );

    $role->add_cap( \'edit_crea_condizioni\' ); 
    $role->add_cap( \'edit_crea_condizionis\' ); 
    $role->add_cap( \'edit_others_crea_condizionis\' ); 
    $role->add_cap( \'publish_crea_condizionis\' ); 
    $role->add_cap( \'read_crea_condizioni\' ); 
    $role->add_cap( \'read_private_crea_condizionis\' ); 
    $role->add_cap( \'delete_crea_condizioni\' ); 
    $role->add_cap( \'edit_published_crea_condizionis\' );
    $role->add_cap( \'delete_published_crea_condizionis\' );
}
add_action( \'admin_init\', \'add_bounty_product_caps\' );

结束

相关推荐

About Wordpress capabilities

我知道WordPress是博客引擎的最佳选择,通过一些插件,如Advance Custom Field,WP可以成为一个很棒的CMS。但它仍然有利于出版商将内容推送给用户。现在我的处境相当严峻。我的朋友想使用WP作为一个引擎,用户可以贡献他们的帖子,其他人可以查看它。是否可以使用WP我可以创建自定义主题(&a);插件可以做到这一点,但当用户在插件上放置很多东西(页面和帖子)时,它对性能有好处吗?