如果产品作者不是管理员,则从 WooCommerce 商店和存档页面隐藏产品

Hide products from WooCommerce shop and archive pages if product author is not Admin

这与当前用户是谁无关。如果产品的作者是管理员,我想要完成的是隐藏商店和存档页面上的任何产品。我尝试在这里和其他地方搜索,但我发现的任何内容都与当前用户是否登录或管理员有关。非常感谢任何帮助!

function hide_product_by_user_role( $query ) {
    
    
     $authors = ( array ) $product->authors; // obtaining product author -- this is wrong
    
    
    if ( $query->is_main_query() && is_woocommerce() &&  $authors[0] != 'administrator' ) {
        
        .... what do I do here?
    }
}

add_action( 'pre_get_posts', 'hide_product_by_user_role' );
  1. 查找管理员 ID
  2. 将它们包含在 query
add_action('pre_get_posts', 'hide_product_by_user_role', 999);

function hide_product_by_user_role($query){ 

    $users_args = array(
        'role__in' => array('Administrator'),
        'fields'   => 'ID'
    );

    $admins_ids = get_users($users_args);

    if ($query->is_main_query() && is_woocommerce() ) {
        $query->set('author__in', $admins_ids);
    }
}

参考:
https://developer.wordpress.org/reference/classes/wp_query/#parameters