在 WordPress / WooCommerce 中获取产品属性术语固定链接
Getting the Product Attribute Term Permalink in 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 更进一步,但我假设这是一个相当标准的要求。任何指点表示赞赏。
这基本上满足了我的要求:
$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>';
}
但肯定可以做一些改进。
获得属性项(在本例中为摄影师的姓名)后,您可以使用 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 );
}
出于某种原因,URL 不是一个很好的固定链接。已经晚了,我不知道这是否与我的配置有关,或者究竟是什么,但这是一个开始。
我正在使用 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 更进一步,但我假设这是一个相当标准的要求。任何指点表示赞赏。
这基本上满足了我的要求:
$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>';
}
但肯定可以做一些改进。
获得属性项(在本例中为摄影师的姓名)后,您可以使用 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 );
}
出于某种原因,URL 不是一个很好的固定链接。已经晚了,我不知道这是否与我的配置有关,或者究竟是什么,但这是一个开始。