У меня есть пользователи, у которых есть определенные c продукты для каждого пользователя, поэтому я пытаюсь добавить категорию «Мои продукты», где каждый пользователь может видеть свои продукты
function my_products_cat( $q ) {
global $post, $wpmem;
$products = array();
$args = array(
'limit' => 100,
);
$products = wc_get_products( $args );
foreach($products as $product){
if(wpmem_user_has_access($product)){
$product->addToCategories("My Products");
}
}
}
add_action( 'woocommerce_before_shop_loop', 'my_products_cat' );
Примечание Я использую wp-members для добавления некоторых функций. И по какой-то причине 'pre_get_posts' приводит к сбою моего сайта
Мне в основном нужна функциональность, чтобы иметь возможность временно добавить продукт в категорию "Мои продукты"
РЕДАКТИРОВАТЬ
Текущий Прогресс: я получил, чтобы показать только доступные продукты для пользователя. Теперь мне нужно, чтобы он работал только на странице 945 (страница с шорткодом woocommerce [products]) или когда выбрана категория «Мои продукты». Либо будет хорошо
function custom_pre_get_posts_query( $q ) {
if(is_page(945)){
global $post, $wpmem;
$posts = array();
$ids = array();
$args = array('post_type' => 'product',
'posts_per_page' => '-1',);
$posts = get_posts($args);
foreach($posts as $postss){
$temppik = $wpmem->membership->get_post_products( $postss->ID );
if(!wpmem_user_has_access($temppik)){
array_push($ids, strval($postss->ID));
}
}
$tax_query = (array) $q->get( 'tax_query' );
$tax_query[] = array(
'taxonomy' => 'product_tag',
'field' => 'slug',
'terms' => $ids,
'operator' => 'NOT IN'
);
$q->set( 'tax_query', $tax_query );
}
}
add_action( 'woocommerce_product_query', 'custom_pre_get_posts_query' );