我已经在管理员主菜单中将Woocommerce产品版本显示为“帖子类型列表”。
add_filter('woocommerce_register_post_type_product_variation', 'my_func1');
function my_func1($arr){
$arr['public'] = true;
$arr['supports'] = array('title', 'editor', 'custom-fields');
$arr['menu_icon'] = 'dashicons-calendar-alt';
$arr['menu_name'] = 'Dates';
$arr['label'] = 'Dates';
return $arr;
}
在调试模式下查看post-type管理页面时,我得到:
Notice: Undefined property: stdClass::$delete_posts in /wp-admin/includes/class-wp-posts-list-table.php on line 400
如果我在class-wp-posts-list-table.php中的392行进行var_dump:
var_dump($post_type_obj);
结果是未定义“ delete_posts”的对象,仅定义了“ delete_post”。
["cap"]=> object(stdClass)#16026 (8) {
["edit_post"]=> string(12) "edit_product"
["read_post"]=> string(12) "read_product"
["delete_post"]=> string(14) "delete_product"
["edit_posts"]=> string(13) "edit_products"
["edit_others_posts"]=> string(20) "edit_others_products"
["publish_posts"]=> string(16) "publish_products"
["read_private_posts"]=> string(21) "read_private_products"
["create_posts"]=> string(13) "edit_products" }`
这是疏忽吗?为什么capability_type='product'?
的这一部分没有在哪里注册?如何在Woocommerce核心注册的现有post_type中注册“ delete_posts”功能?
答案 0 :(得分:0)
似乎有助于更彻底地阅读Wordpress Codex ...
您可以在注册钩中设置map_meta_cap
:
add_filter('woocommerce_register_post_type_product_variation', 'my_func1');
function my_func1($arr){
$arr['public'] = true;
$arr['supports'] = array('title', 'editor', 'custom-fields');
$arr['menu_icon'] = 'dashicons-calendar-alt';
$arr['menu_name'] = 'Dates';
$arr['label'] = 'Dates';
$arr['map_meta_cap'] = true;
return $arr;
}
这捡起了我似乎缺少的功能。