Hides WooCommerce genereted pages from non admin users
/**
* Hides the WooCommere pages from non Administrators
* See: http://stackoverflow.com/questions/26744680/how-to-hide-or-block-the-woocommerce-generated-pages/26765913#26765913
*/
add_action( 'pre_get_posts', function( $query ) {
if ( !is_admin() || !$query->is_main_query() ) return;
global $pagenow, $post_type;
if ( $pagenow == 'edit.php' && $post_type == 'page' && !in_array( 'administrator', wp_get_current_user()->roles ) ) {
$exclude = array_map(
function( $item ) { return get_option( $item ); },
array( 'woocommerce_shop_page_id', 'woocommerce_cart_page_id', 'woocommerce_checkout_page_id', 'woocommerce_myaccount_page_id' )
);
$query->set( 'post__not_in', array_filter( $exclude ) );
}
});
add_action( 'wp_before_admin_bar_render', function() {
if ( is_admin() || !is_page() ) return;
global $wp_admin_bar;
$exclude = array_map(
function( $item ) { return get_option( $item ); },
array( 'woocommerce_shop_page_id', 'woocommerce_cart_page_id', 'woocommerce_checkout_page_id', 'woocommerce_myaccount_page_id' )
);
if ( in_array( get_queried_object()->ID, $exclude ) && !in_array( 'administrator', wp_get_current_user()->roles ) )
$wp_admin_bar->remove_menu( 'edit' );
});