Вы можете использовать обычный шорткод woocommerce на определенной странице, где вы хотите отобразить частные продукты, например:
[products limit="12" columns="4" paginate="true"]
Вы будете устанавливать аргументы шорткода по своему желанию (например, числостолбцов, количество элементов на странице, включение нумерации страниц и т. д.) …
Затем, чтобы запросить все частные продукты, используйте следующую команду (заменив ниже 102
идентификатором страницы, где вы находитесьиспользуя шорткод) :
add_filter( 'woocommerce_shortcode_products_query', 'display_private_product_list', 10, 3 );
function display_private_product_list( $query_args, $atts, $loop_name ){
if( get_the_id() == 102 ){
if( ! is_user_logged_in() ){
$query_args['post_status'] = 'private';
} else {
$query_args['post_type'] = 'nothing'; // Display nothing for logged users
}
}
return $query_args;
}
Код помещается в файл function.php активной дочерней темы (или активной темы).Протестировано и работает.
В нем будут показаны все частные продукты для не зарегистрированных пользователей.