Как отобразить список продуктов Woocommerce по метке

Вопрос или проблема

<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-оптимизацию, так как семантически правильная структура и разметка сайтов имеют позитивное влияние на их видимость в поисковых системах.

Если у вас возникнут дополнительные вопросы, пожалуйста, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...