Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 动态替换Woocommerce产品简短描述中的自定义标记_Php_Wordpress_Replace_Woocommerce_Tags - Fatal编程技术网

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

Php 动态替换Woocommerce产品简短描述中的自定义标记,php,wordpress,replace,woocommerce,tags,Php,Wordpress,Replace,Woocommerce,Tags,对于Woocommerce网店,我正在使用插件,并尝试用特定的产品值动态替换产品简短描述中特定的自定义标记,如下所示: 产品名称 产品类别(带有术语链接) 产品品牌(含术语链接) 例如,要替换的标记可能类似于: %product\u name% %category\u name% 和%brand\u name% 另外,对于被替换的产品类别和产品品牌来说,有到产品类别或产品品牌归档页面的链接也是非常好的 我不知道去哪里找。我在谷歌上搜索过,但不幸的是,我找不到任何相关和有用的东西 非常感谢

对于Woocommerce网店,我正在使用插件,并尝试用特定的产品值动态替换产品简短描述中特定的自定义标记,如下所示:

  • 产品名称
  • 产品类别(带有术语链接)
  • 产品品牌(含术语链接)
例如,要替换的标记可能类似于:

  • %product\u name%
  • %category\u name%
  • %brand\u name%
另外,对于被替换的产品类别和产品品牌来说,有到产品类别或产品品牌归档页面的链接也是非常好的

我不知道去哪里找。我在谷歌上搜索过,但不幸的是,我找不到任何相关和有用的东西


非常感谢您的帮助。

更新2

下面是使用
woocommerce\u short\u description
filter hook中挂钩的自定义函数实现的方法,该函数将用单个产品页面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);
}
add_filter('woocommerce_short_description','customization_wc_short_description',20,1);
函数自定义_wc_short_说明($short_说明){
如果(is_archive())返回$short_description;
全球$product$post;
//1.产品类别(一个产品可以有多个)
$catgories=array();
foreach(wp_get_post_terms($post->ID,'product_cat')作为$term){
$term_link=get_term_link($term,'product_cat');
$catgories[]=“”;//已格式化
}
//2.产品品牌(一个产品可以有很多)
$brands=array();
foreach(wp_get_post_terms($post->ID,'product_brand')作为$term){
$term_link=get_term_link($term,'product_brand');
$brands[]=“”;//已格式化
}
//3.由产品值替换的标签数据数组
$data=数组(
“%product\u name%”=>$product->get\u name(),
“%category\u name%”=>reset($catgories),//我们使用第一个产品类别
“%brand_name%”=>重置($brands),
);
$keys=array_keys($data);//标记
$values=array_values($data);//替换值
//替换自定义标记并返回“干净”简短描述
返回str_replace($key、$value、$short_description);
}

代码进入活动子主题(或活动主题)的function.php文件。测试和工作。

对您来说“合并标签”是什么意思?显示器应该是怎样的?你能给出一个前后的例子,添加更多细节编辑你的问题吗?合并标签意味着标签从WooCommerce中的产品获取数据。例如,如果我将合并标记%product\u name%放在后端的描述中,则页面将在描述中显示产品名称。除%brand\u name%外,其他名称都有效。我可能是因为合并标签必须从我运行的WooCommerce Brands插件中获取数据。知道怎么解决吗?嘿!再次感谢!不幸的是,品牌代码现在显示类别。这里是该页面的链接:如您所见,“Hanglampen”是类别,“Artemide”是品牌。@ArjanWassink抱歉,我忘了更新一些错误。现在已经完成了,应该对产品品牌有效…再试一次。太棒了!它工作得很好。非常感谢LoicTheAztec!最后一个问题tho:是否可以用一点css或类来设置标签的样式?我想在链接上画一条下划线。再次感谢你@ArjanWassink是的,当然,因为我已经为产品类别链接标签(
cat-term
)和产品品牌链接标签(
brand-term
)添加了类……所以您将使用类似这样的示例:
a.cat-term,a.brand-term{color:#96588a;}