Вопрос или проблема
<div class="row">
<?php
$taxonomyName = "product_tag";
if($taxonomyname = "latest-product"){
//Это получает только термины верхнего уровня. Это делается путем установки родителя на 0.
$parent_terms = get_terms($taxonomyName, array('parent' => 0, 'orderby' => 'term_id', 'hide_empty' => true, 'order' => 'ASC'));
foreach ($parent_terms as $pterm) { ?>
<div class="col-xs-3 col-md-3 padding_fix">
<a href="https://wordpress.stackexchange.com/questions/341419/<?php echo get_term_link($pterm->name, $taxonomyName); ?>">
<?php
$thumbnail_id = get_woocommerce_term_meta($pterm->term_id, 'thumbnail_id', true);
// получаем URL изображения для родительской категории
$image = wp_get_attachment_url($thumbnail_id);
echo '<img src="'.$image.'" alt="" width="762" height="365" />'; ?>
<h3 class="text-center" style="color: #fff;"><?php echo $pterm->name; ?></h3>
</a>
</div>
<?php } ?>
<?php } ?>
это мой вышеуказанный код, где я хочу отобразить продукт с тегом latest-product.
Я не могу отобразить продукт по тегу latest-product.
Наконец, я решил свою проблему. Мой предыдущий код был только для продуктов по категориям, но при использовании тега это должно быть постом. Для лучшего объяснения, может кто-то объяснить весь процесс.
<?php
$args = array(
'number' => $number,
'orderby' => 'title',
'order' => 'ASC',
'hide_empty' => $hide_empty,
'include' => $ids
);
$product_tags = get_terms( 'product_tag', $args );
$count = count($product_tags);
if ( $count > 0 ){
foreach ( $product_tags as $product_tag ) {
// echo '<h4><a href="' . get_term_link( $product_tag ) . '">' . $product_tag->name . '</a></h4>';
$args = array(
'posts_per_page' => -1,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'product_tag',
'field' => 'slug',
// 'terms' => 'white-wines'
'terms' => $product_tag->slug,
'product_tag'=> "latest-product"
)
),
'post_type' => 'product',
'orderby' => 'title,'
);
$products = new WP_Query( $args );
echo "<ul>";
while ( $products->have_posts() ) {
$products->the_post();
?>
<li>
<a href="<?php the_permalink(); ?>">
<?php the_title(); ?>
<?php echo get_the_post_thumbnail( $post_id, 'thumbnail' ); ?>
</a>
</li>
<?php
}
echo "</ul>";
}
}
?>
product_tag – это неиерархическая категория продуктов. Чтобы получить продукты, вам нужно выполнить запрос, как показано ниже:
add_action("admin_init","display_products");
function display_products()
{
ob_start();
$args = array(
'post_type' => 'product',
'posts_per_page' => -1,
'product_tag' => array('latest-product')
);
$loop = new WP_Query( $args );
$product_count = $loop->post_count;
if( $product_count > 0 ){
echo '<ul class="products">';
while ( $loop->have_posts() ) : $loop->the_post();
global $product;
global $post;
echo "<li>" . $loop->post->ID. " </li>";
endwhile;
echo '</ul>';
}else{
echo 'Нет продуктов, соответствующих вашим критериям.';
}
$result = ob_get_clean();
echo $result;
}
Замечание: Просто чтобы проверить фрагмент, я добавил его в хук admin_init. Вы можете изменить это.
Запрос по налогам может быть добавлен в аргументы для поддержки нескольких тегов.
вам нужно выполнить запрос к продуктам, связанным с этим тегом, и отобразить их соответствующим образом. сначала вы получаете объект термина для тега latest-product
, используя get_term_by
, затем проверяете, существует ли тег $tag
, и затем используете wc_get_products
, чтобы получить ID продуктов, связанных с этим тегом.
<div class="row">
<?php
$taxonomyName = "product_tag";
$tag_slug = "latest-product"; // Укажите слаг тега, для которого вы хотите отобразить продукты
// Получите объект термина для указанного тега
$tag = get_term_by('slug', $tag_slug, $taxonomyName);
// Убедитесь, что тег существует и действителен
if ($tag) {
// Получите ID продуктов, связанных с тегом
$product_ids = wc_get_products(array(
'status' => 'publish',
'tag' => $tag->name,
'return' => 'ids',
));
// Перебираем ID продуктов
foreach ($product_ids as $product_id) {
$product = wc_get_product($product_id); ?>
<div class="col-xs-3 col-md-3 padding_fix">
<a href="<?php echo get_permalink($product_id); ?>">
<?php echo $product->get_image(); ?>
<h3 class="text-center" style="color: #fff;"><?php echo $product->get_name(); ?></h3>
</a>
</div>
<?php }
} ?>
</div>
.
Ответ или решение
Чтобы отобразить список продуктов WooCommerce по тегу, нужно воспользоваться встроенными функциями WordPress и WooCommerce. В данной статье будет подробно описано, как это сделать, а также будут предоставлены кодовые примеры для реализации.
Пошаговое руководство по выводу продуктов по тегу в WooCommerce
1. Понимание структуры тегов в WooCommerce
WooCommerce использует иерархическую структуру для категорий и неиерархическую для тегов продуктов. Теги могут иметь произвольные имена и не имеют родительских категорий. Это позволяет гибко организовать и фильтровать продукты.
2. Получение идентификатора тега
Чтобы извлечь продукты по конкретному тегу, вы можете использовать функцию get_term_by
для получения объекта тега. В частности, мы будем использовать тег latest-product
.
$tag_slug = 'latest-product'; // Замените на ваш тег
$taxonomy_name = 'product_tag';
// Получите объект термина для указанного тега
$tag = get_term_by('slug', $tag_slug, $taxonomy_name);
3. Проверка существования тега
Перед выполнением запросов стоит убедиться, что тег существует:
if ($tag) {
// Продолжайте дальше
}
4. Получение идентификаторов продуктов
Используйте функцию wc_get_products
для извлечения идентификаторов продуктов, связанных с полученным тегом:
$product_ids = wc_get_products(array(
'status' => 'publish',
'tag' => $tag->name,
'return' => 'ids',
));
5. Вывод продуктов на страницу
После того как вы получили идентификаторы продуктов, можно приступить к их отображению. Код ниже показывает, как это сделать:
<div class="row">
<?php
if (!empty($product_ids)) {
foreach ($product_ids as $product_id) {
$product = wc_get_product($product_id); ?>
<div class="col-xs-3 col-md-3 padding_fix">
<a href="<?php echo get_permalink($product_id); ?>">
<?php echo $product->get_image(); ?>
<h3 class="text-center" style="color: #fff;"><?php echo $product->get_name(); ?></h3>
</a>
</div>
<?php }
} else {
echo '<p>Нет продуктов, соответствующих вашему запросу.</p>';
} ?>
</div>
Заключение
Вывод продуктов WooCommerce по тегам — это довольно простая задача благодаря функционалу WordPress и плагина WooCommerce. Следуя вышеописанным шагам, вы сможете успешно реализовать отображение продуктов по конкретному тегу, например, latest-product
. Этот метод позволяет не только значительно улучшить пользовательский интерфейс, но и повысить вашу SEO-оптимизацию, так как семантически правильная структура и разметка сайтов имеют позитивное влияние на их видимость в поисковых системах.
Если у вас возникнут дополнительные вопросы, пожалуйста, не стесняйтесь обращаться за помощью.