Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Show Resources in menu and redefine Vendor Admin Role to be able to manage resource
- function modify_bookable_resource_custom_post_type()
- {
- //Modify Custom post type to allow access and show up in menu
- global $wp_post_types;
- $p = 'bookable_resource';
- // Someone has changed this post type, always check for that!
- if ( empty ( $wp_post_types[ $p ] )
- or ! is_object( $wp_post_types[ $p ] )
- or empty ( $wp_post_types[ $p ]->labels )
- )
- return;
- $wp_post_types[ $p ]->show_in_menu = true;
- $wp_post_types[ $p ]->map_meta_cap = false;
- //Redefine Vendor Amin role
- remove_role( 'wc_product_vendors_admin_vendor' );
- add_role( 'wc_product_vendors_admin_vendor', __( 'Vendor Admin', 'woocommerce-product-vendors' ), admin_vendor_caps() );
- }
- add_action( 'wp_loaded', 'modify_bookable_resource_custom_post_type', 1002 );
- //Redefine Admin Vendor capabilities
- //Copied and modified from plugins/woocommerce-product-vendors/includes/class-wc-product-vendors-roles-caps.php
- function admin_vendor_caps() {
- return apply_filters( 'wcpv_default_admin_vendor_role_caps', array(
- 'read_product' => true,
- 'manage_product' => true,
- 'edit_products' => true,
- 'edit_product' => true,
- 'edit_published_products' => true,
- 'edit_shop_orders' => true,
- 'assign_product_terms' => true,
- 'upload_files' => true,
- 'read' => true,
- 'manage_bookings' => true,
- 'edit_others_products' => false,
- 'view_vendor_sales_widget' => true,
- 'delete_published_products' => true,
- 'delete_others_products' => false,
- 'delete_posts' => true,
- 'delete_others_posts' => false,
- 'edit_comment' => false,
- 'edit_comments' => false,
- 'view_woocommerce_reports' => false,
- 'publish_products' => false,
- //Add resource capabilities to the Vendor Admin role
- 'edit_manage_booking_resource' => true,
- 'read_manage_booking_resource' => true,
- 'delete_manage_booking_resource' => true,
- 'edit_manage_booking_resources' => true,
- 'edit_others_manage_booking_resources' => false, //WHY IS IT SHOWING OTHERS' RESOURCES ??
- 'publish_manage_booking_resources' => true,
- 'read_private_manage_booking_resources' => true,
- 'edit_manage_booking_resources' => true,
- 'delete_others_manage_booking_resources' => false,
- ) );
- }
- //Hack - Shows only user's own resources if the user does not have the edit_others_manage_booking_resources capability
- function resources_for_current_vendor($query) {
- global $pagenow;
- if( 'edit.php' != $pagenow || !$query->is_admin )
- return $query;
- if( !current_user_can( 'edit_others_manage_booking_resources' ) ) {
- global $user_ID;
- $query->set('author', $user_ID );
- }
- return $query;
- }
- add_filter('pre_get_posts', 'resources_for_current_vendor');
Add Comment
Please, Sign In to add comment