获取WordPress / WooCommerce中的产品属性术语永久链接

时间:2015-04-09 20:37:05

标签: wordpress woocommerce

我正在使用WooCommerce与WordPress建立一个古董照片商店。

我正在使用WooCommerce产品属性功能来存储有关项目摄影师的信息。

在此处查看示例,摄影师属性在左侧http://bit.ly/1Dp999O

的框中拉出

拉出属性的代码如下所示:

if($attribute['is_taxonomy']) {
  $values=wc_get_product_terms($product->id, $attribute['name'], array('fields' => 'names'));
  echo apply_filters('woocommerce_attribute', wpautop(wptexturize(implode(', ', $values))), $attribute, $values);
}

$ values如下所示:

Array ( [0] => Photographer 1 )

问题是,如何进入由WordPress和WooCommerce自动生成的摄影师的永久链接: http://bit.ly/1JtwBna

我在WooCommerce中找不到任何关于此的文档,这似乎是分类中的分类,比stabdard WordPress更进一步,但我认为这是一个相当标准的要求。任何指针都赞赏。

2 个答案:

答案 0 :(得分:4)

一旦你拥有了属性词(在这种情况下是摄影师的名字),你可以使用get_term_link()来获取URL。由于$product ID未传递到woocommerce_attribute文件夹,因此无法对其进行过滤,而是创建product-attributes.php模板的覆盖。并将相关部分修改为以下内容:

if ( $attribute['is_taxonomy'] ) {

    $terms = wc_get_product_terms( $product->id, $attribute['name'], array( 'fields' => 'all' ) );

    $html = '';
    $counter = 1;
    $total = count( $terms );

    foreach( $terms as $term ){ 

        $html .= sprintf( '<a href="%s" title="Permalink to %s">%s</a>', 
            esc_url( get_term_link( $term ) ), 
            esc_attr( $term->name ), 
            wptexturize( $term->name ) 
        );

        if( $counter < $total ){
            $html .= ', ';
        }
        $counter++;

    }

    echo wpautop( $html );

}

出于某种原因,网址并不是一个非常固定的链接。现在已经很晚了,我无法判断这与我的配置有什么关系,或者究竟是什么,但这是一个开始。

答案 1 :(得分:1)

这基本上符合我的要求:

$terms = get_the_terms($product->id, $attribute['name']);
foreach ($terms as $term){
    echo '<a href="'.get_term_link($term->slug, $term->taxonomy).'">'.$term->name.'</a>';
}

但肯定可以做一些改进。