尝试显示自定义分类法" w_label"我在产品下注册。但是,当我尝试使用以下代码显示它时:
register_taxonomy('w_label', array('product'),
array(
'hierarchical' => true,
'label' => 'Product Labels',
'singular_label' => 'Product Label',
'rewrite' => true,
'supports' => array('excerpt', 'thumbnail')
)
);
function w_label_name () {
global $post;
$terms = get_the_terms( $post->ID, 'w_label' );
foreach ( $terms as $term ){
echo '<div class="label">' . $term->name . '</div>';
}
}
add_action( 'woocommerce_before_shop_loop_item_title', 'w_label_name', 2 );
我一直在&#34;警告:为foreach()&#34;
提供的参数无效不确定我错过了什么。如果我将此代码用于默认的WooCommerce类别,则可以使用此代码,但不适用于我在此处注册的自定义分类。
答案 0 :(得分:3)
首先尝试查看awk -F\| -v OFS=" " ' # set input field separator to "|" and output separator to " "
function trim(str) {
gsub(/^ *| *$/,"",str); # remove leading and trailing space from the field
gsub(/ +/," ",str); # mind those multiple spaces as well
return str # return cleaned field
}
{
for(i=1;i<=NF;i++) # loop thru all pipe separated fields
printf "%s%s", trim($i),(i<NF?OFS:ORS) # print field and OFS or
} # output record separator in the end of record
' test.in
尝试在您的函数中是否存在问题,以显示$terms = get_the_terms($post->ID, 'w_label');
:
$terms
然后尝试function w_label_name () {
global $post;
$terms = get_the_terms( $post->ID, 'w_label' );
echo '<div class="label">' . var_dump($terms) . '</div>';
}
代替get_terms( 'w_label' );
并同时回复get_the_terms( $post->ID, 'w_label' );
以查看您的内容。
如果您得到了某些内容,则问题来自var_dump($terms)
以及获取$term->name
的方式。然后你可以尝试这个(没有任何保证,因为未经测试):
$terms
答案 1 :(得分:1)
这是我在产品循环中正确显示标签的代码:
compass.rb
另见 what is the difference between get_terms and get_the_terms in WordPress ? for get_terms vs get_the_terms method