产品版本未定义功能“ delete_posts”

时间:2018-12-03 20:03:20

标签: php wordpress woocommerce hook-woocommerce

我已经在管理员主菜单中将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”功能?

1 个答案:

答案 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;
}

这捡起了我似乎缺少的功能。