动态替换Woocommerce产品简短描述中的自定义标签

时间:2018-06-25 17:34:56

标签: php wordpress replace woocommerce tags

对于Woocommerce网上商店,我正在使用WooCommerce Brands插件,并且尝试将产品简短说明中的动态特定自定义标签动态替换为特定产品值,例如:

  • 产品名称
  • 产品类别(带有术语链接)
  • 产品品牌(带有链接)

例如,要替换的标签可能类似于:

  • %product_name%
  • %category_name%
  • %brand_name%

此外,对于替换的产品类别和产品品牌,拥有指向产品类别或产品品牌档案页面的链接也非常有用。

我不确定在哪里寻找。我已经在整个Google上进行了搜索,但不幸的是我找不到任何相关和有用的信息。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

更新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文件中。经过测试,可以正常工作。