Я хотел бы показывать только товары, связанные со складами, на страницах отдельных товаров WooCommerce.
Я знаю, что могу переопределить single-product/related.php
файл шаблона через Моя тема. Ниже приведен соответствующий код для этого шаблона:
<section class="related products">
<h2><?php _e( 'You May Also Want', 'MyStore' ); ?></h2>
<?php woocommerce_product_loop_start(); ?>
<?php foreach ( $related_products as $related_product ) : ?>
<?php
$post_object = get_post( $related_product->get_id() );
setup_postdata( $GLOBALS['post'] =& $post_object );
wc_get_template_part( 'content', 'product' ); ?>
<?php endforeach; ?>
<?php woocommerce_product_loop_end(); ?>
</section>
Можно ли внести некоторые изменения в этот файл, чтобы на странице одного продукта WooCommerce отображались только товары, связанные со складами? Любая помощь приветствуется.
Вместо редактирования файлов шаблонов вы можете использовать
woocommerce_product_related_posts_query
специальный обработчик фильтра, чтобы изменить запрос, исключив товары, отсутствующие в наличии, из отображаемых связанных товаров:Код находится в файле functions.php активной дочерней темы (или активной темы). Проверено и работает.
Связано: Настройте связанные продукты с помощью индивидуального мета-запрос в Woocommerce
@MohamedAliSamali Извините, но этот код работает и отображает только связанные продукты, которых нет на складе, это то, что вы задали в своем вопросе … Для решения вашей проблемы вам может потребоваться иногда зайти в настройки WooCommerce ›Статус› Инструменты (вкладка) < / i>, а в переходных процессах WooCommerce нажмите Очистить переходные процессы. — person Mohamed Ali Samali; 27.10.2020
add_filter работает, но все скрывает. Я думаю, что нужно только 4 или 5 первых продуктов … если 4 или 5 первых продуктов нет в наличии, он ничего не покажет. но в моем случае продуктов 6, 7 … нет в наличии. — person Mohamed Ali Samali; 28.10.2020
ОБНОВЛЕНИЕ
Поскольку, когда 4 первых продукта отсутствуют в наличии, на нем ничего не отображается (если показаны 4 продукта по умолчанию) вы можете использовать следующий фрагмент вместо перезаписи файла шаблона.
Перезапись файла шаблона
Всегда есть несколько решений, но одно из них может заключаться в перезаписи файла шаблона.
yourtheme/woocommerce/single-product/related.php
Заменять
С участием
Это условие работает, но если, например, 4 первых товара отсутствуют в наличии, оно ничего не отображает. как это сделать, если я хочу отобразить некоторые продукты, потому что не все связанные продукты отсутствуют в наличии? — person Mohamed Ali Samali; 28.10.2020
@MohamedAliSamali Я обновил свой ответ на ваш дополнительный запрос, однако не забывайте, поскольку я уже указывал, что общее правило переполнения стека — это один вопрос за раз. Убедитесь, что ваши вопросы всегда содержат достаточно и
четкой информации, чтобы все сразу было понятно человеку, отвечающему на ваш вопрос. — person Mohamed Ali Samali; 28.10.2020
Это то, что я использовал, и у меня это работает: