Замените динамически настраиваемые теги в кратком описании продукта Woocommerce. - PullRequest
0 голосов
/ 25 июня 2018

Для интернет-магазина Woocommerce я использую плагин WooCommerce Brands , и я пытаюсь заменить динамически определенные пользовательские теги в кратком описании продукта конкретными значениями продукта как:

  • Название продукта
  • Категория продукта (со ссылкой на термин)
  • Марка продукта (со ссылкой на термин)

Например, заменяемые теги могут быть такими:

  • %product_name%,
  • %category_name%
  • и %brand_name%

Кроме того, для заменяемой категории продукта и марки продукта было бы здорово иметь ссылку на страницы архива категории продуктов или бренда продукта.

Я не уверен, где искать.Я искал по всему Google, но я не могу найти ничего связанного и полезного, к сожалению.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 25 июня 2018

Обновление 2

Вот способ сделать это, используя эту пользовательскую функцию, подключенную к woocommerce_short_description фильтр-хуку, который заменит определенные пользовательские теги на значения данных продукта в кратком описании на отдельных страницах продукта.

Теперь, когда товар может иметь много товарных категорий и много товарных марок , я оставляю только первый.

код:

add_filter('woocommerce_short_description', 'customizing_wc_short_description', 20, 1);
function customizing_wc_short_description($short_description){
    if( is_archive() ) return $short_description;
    global $product, $post;

    // 1. Product categories (a product can have many)
    $catgories = array();
    foreach( wp_get_post_terms( $post->ID, 'product_cat' ) as $term ){
        $term_link   = get_term_link( $term, 'product_cat' );
        $catgories[] = '<a class="cat-term" href="'.$term_link.'">'.$term->name.'</a>'; // Formated
    }

    // 2. Product brands (a product can have many)
    $brands = array();
    foreach( wp_get_post_terms( $post->ID, 'product_brand' ) as $term ){
        $term_link   = get_term_link( $term, 'product_brand' );
        $brands[] = '<a class="brand-term" href="'.$term_link.'">'.$term->name.'</a>'; // Formated
    }

    // 3. The data array of tags to be replaced by product values
    $data = array(
        '%product_name%'  => $product->get_name(),
        '%category_name%' => reset($catgories), // We take the first product category
        '%brand_name%'    => reset($brands),
    );

    $keys   = array_keys($data); // The Tags
    $values = array_values($data); // The replacement values

    // Replacing custom tags and returning "clean" short description
    return str_replace( $keys, $values, $short_description);
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.

...