Как временно добавить товар в категорию - woocommerce - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть пользователи, у которых есть определенные 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' );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...