Guest User

Untitled

a guest
May 23rd, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.16 KB | None | 0 0
  1. //Show Resources in menu and redefine Vendor Admin Role to be able to manage resource
  2. function modify_bookable_resource_custom_post_type()
  3. {
  4. //Modify Custom post type to allow access and show up in menu
  5. global $wp_post_types;
  6. $p = 'bookable_resource';
  7.  
  8. // Someone has changed this post type, always check for that!
  9. if ( empty ( $wp_post_types[ $p ] )
  10. or ! is_object( $wp_post_types[ $p ] )
  11. or empty ( $wp_post_types[ $p ]->labels )
  12. )
  13. return;
  14.  
  15. $wp_post_types[ $p ]->show_in_menu = true;
  16. $wp_post_types[ $p ]->map_meta_cap = false;
  17.  
  18. //Redefine Vendor Amin role
  19. remove_role( 'wc_product_vendors_admin_vendor' );
  20. add_role( 'wc_product_vendors_admin_vendor', __( 'Vendor Admin', 'woocommerce-product-vendors' ), admin_vendor_caps() );
  21. }
  22. add_action( 'wp_loaded', 'modify_bookable_resource_custom_post_type', 1002 );
  23.  
  24.  
  25. //Redefine Admin Vendor capabilities
  26. //Copied and modified from plugins/woocommerce-product-vendors/includes/class-wc-product-vendors-roles-caps.php
  27. function admin_vendor_caps() {
  28. return apply_filters( 'wcpv_default_admin_vendor_role_caps', array(
  29. 'read_product' => true,
  30. 'manage_product' => true,
  31. 'edit_products' => true,
  32. 'edit_product' => true,
  33. 'edit_published_products' => true,
  34. 'edit_shop_orders' => true,
  35. 'assign_product_terms' => true,
  36. 'upload_files' => true,
  37. 'read' => true,
  38. 'manage_bookings' => true,
  39. 'edit_others_products' => false,
  40. 'view_vendor_sales_widget' => true,
  41. 'delete_published_products' => true,
  42. 'delete_others_products' => false,
  43. 'delete_posts' => true,
  44. 'delete_others_posts' => false,
  45. 'edit_comment' => false,
  46. 'edit_comments' => false,
  47. 'view_woocommerce_reports' => false,
  48. 'publish_products' => false,
  49.  
  50. //Add resource capabilities to the Vendor Admin role
  51. 'edit_manage_booking_resource' => true,
  52. 'read_manage_booking_resource' => true,
  53. 'delete_manage_booking_resource' => true,
  54. 'edit_manage_booking_resources' => true,
  55. 'edit_others_manage_booking_resources' => false, //WHY IS IT SHOWING OTHERS' RESOURCES ??
  56. 'publish_manage_booking_resources' => true,
  57. 'read_private_manage_booking_resources' => true,
  58. 'edit_manage_booking_resources' => true,
  59. 'delete_others_manage_booking_resources' => false,
  60.  
  61. ) );
  62. }
  63.  
  64.  
  65. //Hack - Shows only user's own resources if the user does not have the edit_others_manage_booking_resources capability
  66. function resources_for_current_vendor($query) {
  67. global $pagenow;
  68.  
  69. if( 'edit.php' != $pagenow || !$query->is_admin )
  70. return $query;
  71.  
  72. if( !current_user_can( 'edit_others_manage_booking_resources' ) ) {
  73. global $user_ID;
  74. $query->set('author', $user_ID );
  75. }
  76. return $query;
  77. }
  78. add_filter('pre_get_posts', 'resources_for_current_vendor');
Add Comment
Please, Sign In to add comment