我们开发了针对WooCommerce插件的优惠。现在我们想要制作一个扩展,显示由YITH多供应商插件创建的供应商拥有的所有产品。所以问题是,如果我在供应商处注册,我就不会看到我的自定义帖子类型"管理优惠"甚至我将所有功能分配给该用户角色或用户。能否帮助我如何允许具有供应商角色的用户访问我的自定义帖子类型?它显示错误"无效的帖子类型。"供应商角色。
以下是我们开发的插件:https://wordpress.org/plugins/offers-for-woocommerce/
我们想要为https://wordpress.org/plugins/yith-woocommerce-product-vendors/
创建扩展程序以下是注册自定义帖子类型的代码:
add_action('init', array( $this, 'angelleye_ofwc_add_post_type_woocommerce_offer' ) );
function angelleye_ofwc_add_post_type_woocommerce_offer(){
$show_in_menu = current_user_can( 'manage_woocommerce' ) ? 'woocommerce' : true;
$args = array(
'labels' => array(
'name' => __('Manage Offers', 'offers-for-woocommerce'),
'singular_name' => __('WooCommerce Offer', 'offers-for-woocommerce'),
'add_new' => __('Add New', 'offers-for-woocommerce'),
'add_new_item' => __('Add New WooCommerce Offer', 'offers-for-woocommerce'),
'edit' => __('Manage', 'offers-for-woocommerce'),
'edit_item' => __('Manage WooCommerce Offer', 'offers-for-woocommerce'),
'new_item' => __('New WooCommerce Offer', 'offers-for-woocommerce'),
'view' => __('View', 'offers-for-woocommerce'),
'view_item' => __('View WooCommerce Offer', 'offers-for-woocommerce'),
'search_items' => __('Search WooCommerce Offers', 'offers-for-woocommerce'),
'not_found' => __('No WooCommerce Offers found', 'offers-for-woocommerce'),
'not_found_in_trash' => __('No WooCommerce Offers found in Trash', 'offers-for-woocommerce'),
'parent' => __('Parent WooCommerce Offer', 'offers-for-woocommerce')
),
'description' => 'Offers for WooCommerce - Custom Post Type',
'public' => true,
'publicly_queryable' => true,
'exclude_from_search' => true,
'hierarchical' => false,
'show_in_menu' => $show_in_menu,
'menu_position' => '',
'show_in_admin_bar' => false,
'supports' => array( 'section_id_offer_comments', 'section_id_offer_summary', 'section_id_offer_addnote' ),
'taxonomies' => array(''),
'menu_icon' => '',
'has_archive' => false,
'capability_type' => 'woocommerce_offer',
'map_meta_cap' => true
);
register_post_type( 'woocommerce_offer', $args );
$this->create_woocommerce_offer_capabilities();
}
public function create_woocommerce_offer_capabilities() {
global $wp_roles;
$woocommerce_offer_capabilities = get_option('woocommerce_offer_capabilities');
if (empty($woocommerce_offer_capabilities)) {
if (!class_exists('WP_Roles')) {
return;
}
if (!isset($wp_roles)) {
$wp_roles = new WP_Roles();
}
$capabilities = $this->get_core_capabilities();
foreach ($capabilities as $cap_group) {
foreach ($cap_group as $cap) {
$wp_roles->add_cap('shop_manager', $cap); // allows access to shop managers
$wp_roles->add_cap('administrator', $cap); // allows access to admins
$wp_roles->add_cap('yith_vendor', $cap); //allows access to vendors of yith multi vendor plugin
}
}
} else {
update_option('woocommerce_offer_capabilities', true);
}
}
public function get_core_capabilities() {
$capabilities = array();
$capability_types = array('woocommerce_offer');
foreach ($capability_types as $capability_type) {
$capabilities[$capability_type] = array(
// Post type
"edit_{$capability_type}",
"read_{$capability_type}",
"delete_{$capability_type}",
"edit_{$capability_type}s",
"edit_others_{$capability_type}s",
"publish_{$capability_type}s",
"read_private_{$capability_type}s",
"delete_{$capability_type}s",
"delete_private_{$capability_type}s",
"delete_published_{$capability_type}s",
"delete_others_{$capability_type}s",
"edit_private_{$capability_type}s",
"edit_published_{$capability_type}s",
);
}
return $capabilities;
}
请帮忙。提前谢谢。