Скрыть на складе Woocommerce сопутствующие товары - PullRequest
0 голосов
/ 01 марта 2019

В woocommerce я хотел бы скрыть Нет в наличии товары из Похожие товары на отдельных страницах товара.Возможно ли это?

Любой трек ценится.

Ответы [ 3 ]

0 голосов
/ 02 марта 2019

создайте функцию и подключите ее к хуку связанных продуктов woocommerce, например:

function dont_show_outofstock( $is_visible, $id ) {
    $product = new wC_Product( $id );

    if ( ! $product->is_in_stock() && ! $product->backorders_allowed() ) {
    $is_visible = false;
    }

    return $is_visible;
}
add_filter( 'woocommerce_output_related_products_args', 'dont_show_outofstock', 10, 2 );
0 голосов
/ 21 апреля 2019

Да, можно скрыть товары со склада из сопутствующих товаров.

Добавьте приведенное ниже в файл functions.php - это скроет товары, не относящиеся к товарам, из сопутствующих товаров.

add_filter( 'woocommerce_output_related_products_args', function( $args )
{
    $args = wp_parse_args( array(
        'posts_per_page' => 4,
        'meta_query' => array (
           'key' => '_stock_status',
           'value' => 'instock'
    )
    ), $args );
    return $args;
});

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

0 голосов
/ 01 марта 2019

Попробуйте следующее:

add_filter( 'woocommerce_product_related_posts_query', 'alter_product_related_posts_query', 10, 3 );
function alter_product_related_posts_query( $query, $product_id, $args ){
    global $wpdb;

    $query['join']  .= " INNER JOIN {$wpdb->postmeta} as pm ON p.ID = pm.post_id ";
    $query['where'] .= " AND pm.meta_key = '_stock_status' AND meta_value = 'instock' ";

    return $query;
}

Код находится в файле function.php вашей активной дочерней темы (или активной темы).Я надеюсь, что это работает.

...