Я работаю над веб-сайтом электронной коммерции с использованием woocommerce.

Я стилизую карточку продукта (второй контейнер, который включает название продукта, цену и т. Д.) В категориях магазинов и во всех местах, используя хуки и файл content-product.php.

Мой код для файла product.php:

<div class="second-container">

            <div class="product_info">
                <?php do_action( 'woocommerce_before_shop_loop_item_title'); ?>
                <a href="<?php echo get_the_permalink() ?>" class="title"><?php do_action( 'woocommerce_shop_loop_item_title' ); ?></a>
                                <?php do_action( 'woocommerce_after_shop_loop_item_title' ); ?>

Этот, чтобы показать имя.

Для моей первой записи, которая является настраиваемым атрибутом с именем «Бренд», я использую следующую функцию в моем файле functions.php

add_action('woocommerce_shop_loop_item_title', 'display_custom_product_attributes_on_loop', 5 );
function display_custom_product_attributes_on_loop() {
    global $product;

    
    $value2 = $product->get_attribute('Brand');
    

    if ( !  empty($value2)  ) {

        echo '<div class="items" style=";"><p>';

        $attributes = array(); // Initializing

        
        if ( ! empty($value2) ) {
            $attributes[] = __("") . ' ' . $value2;
        }

        

        echo implode( '', $attributes ) . '</p></div>';
    }
}

В любом случае мне было очень сложно добраться до этого момента, поскольку я ничего не знаю о php, он работает нормально, но есть проблема, которая заключается в том, что между двумя крючками есть некоторый промежуток См. изображение где бренд = лофт title = Мужской черный свитер с высоким воротом 2600

Я попытался манипулировать заполнением в css, используя все доступные контейнеры, верхнее / нижнее заполнение, но не удалось удалить интервал.

Я ищу помощь в одном из следующих

1- Объедините бренд и название в одной строке, давая бренду постоянную ссылку на глобальный фильтр атрибута, а название - постоянную ссылку самого продукта (рекомендуется 100%).

ИЛИ

2- Объедините бренд и название в одной строке, дав им обоим постоянную ссылку только для продукта (рекомендуется 80%).

ИЛИ

3- Уменьшите интервал между первой и второй строкой.

Страница моего магазина для справки

Я использую плагин Swoof для фильтрации

Большое спасибо и признательность за любую помощь.

1
mostafam123g 19 Май 2021 в 11:58

1 ответ

Лучший ответ

Вы можете использовать ловушку фильтра the_title для управления заголовком. Также используйте некоторую условную проверку, чтобы управлять только названием продукта на странице магазина. Итак, я бы сделал что-то вроде этого:

add_filter('the_title', 'display_custom_product_attributes_on_loop', 20, 2);

function display_custom_product_attributes_on_loop($the_title, $id)
{
  global $product;

  if (is_shop() && get_post_type($id) == 'product') :

    $value2 = $product->get_attribute('Brand');
    
    if ( !  empty($value2)  ):

      $the_title =  $value2 . ' ' . '<a href="' . get_the_permalink() . '">' . $the_title . '</a>';

    endif;

  endif;

  return $the_title;
}

Это выведет attribute value + your product title, который является a link для single product page.

ИЛИ

add_filter('the_title', 'display_custom_product_attributes_on_loop', 20, 2);

function display_custom_product_attributes_on_loop($the_title, $id)
{
  global $product;

  if (is_shop() && get_post_type($id) == 'product') :

    $value2 = $product->get_attribute('Brand');
    
    if ( !  empty($value2)  ):

      $the_title =  $the_title . ' ' . '<a href="' . get_the_permalink() . '">' . $value2 . '</a>';

    endif;

  endif;

  return $the_title;
}

Это выведет the product title + your attribute value, который является a link для single product page.

1
Ruvee 19 Май 2021 в 14:45