Скрыть продукты, опубликованные определенными пользователями в Woocommerce - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь скрыть продукты в Woocommerce в соответствии с идентификатором пользователя, который их опубликовал.

Я создал следующий код, но он не работает.

function Products_for_vendor() {
$args     = array( 'post_type' => 'product', 'post_author' => '2' );
$products = get_posts( $args );

    foreach ($products as $product->ID) {

        $post_id = $product->ID

        $terms = array( 'exclude-from-catalog', 'exclude-from-search' );
        wp_set_object_terms( $post_id, $terms, 'product_visibility', false );

    }

}

add_action( 'init', 'Products_for_vendor' );

чтобы скрыть пост, я извлек код, упомянутый в этом запросе: Изменить видимость продукта через PHP в Woocommerce 3 +

Любая помощь или комментарий приветствуются.

Спасибо ввперед.

1 Ответ

0 голосов
/ 13 сентября 2018

Вы не должны изменять подобные вещи напрямую - WooCommerce имеет специальные функции, чтобы обеспечить будущую совместимость с любыми структурными изменениями базы данных и обеспечить правильную синхронизацию данных продукта во внутренних кэшах.

Вместо этого внутри цикла foreach используйте это:

// Get an instance of the product
$theproduct = wc_get_product($product->ID);
// Change the product visibility (options are: 'hidden', 'visible', 'search' and 'catalog'.
$theproduct->set_catalog_visibility('hidden');
// Finally, save and sync the product changes
$theproduct->save();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...