【发布时间】:2018-05-29 21:35:04
【问题描述】:
我使用 WPML 作为翻译插件和 Woocommerce。我的产品只有英文版,其他语言没有翻译就回退到这些。但是,我面临产品类别计数的问题。如果网站语言是英语,例如在 Cat A 中,我有 4 种产品。计数正确显示为 4。如果我切换到意大利语,则计数为 0。我已经与 WPML 支持进行了检查。他们建议我使用自定义代码。因此,我创建了一个简码来显示带有计数器的所有类别,就像 Woocmmerce [product_categories] 的官方简码一样。使用我自己的简码显示类别,但我仍然有同样的问题。这是我的代码。我有一个 if (ICL Language Code == '') 然后获取默认类别代码。我对此进行了测试,并获得了默认类别 ID。使用类别代码,我尝试获取术语计数。不过,似乎有些不对劲。即使 $default_lang_id 是英文的类别 ID,计数器也会退回到当前语言,例如意大利语。我需要直接从 terms_taxonomies -> count 通过 wp 查询来提供这个吗?
function prod_categories() {
$get_featured_cats = array(
'taxonomy' => 'product_cat',
'orderby' => 'asc',
'show_count' => '1',
'hide_empty' => '0',
'include' => $cat_array
);
$all_categories = get_categories( $get_featured_cats );
$j = 1;
foreach ($all_categories as $cat) {
$cat_id = $cat->term_id;
$cat_link = get_category_link( $cat_id );
$thumbnail_id = get_woocommerce_term_meta( $cat->term_id, 'thumbnail_id', true ); // Get Category Thumbnail
$image = wp_get_attachment_url( $thumbnail_id );
if(ICL_LANGUAGE_CODE=='de' || ICL_LANGUAGE_CODE=='fr' || ICL_LANGUAGE_CODE=='it'){
$default_lang_id = icl_object_id( $cat_id, 'product_cat', true, 'en' );
$default_lang_count = get_term( $default_lang_id, 'product_cat' );
};
if ( $image ) {
echo '<div style="float:left;margin:10px;"><a href="' . $cat_link . '"><img src="' . $image . '" alt="" /><br><center>' . $cat->name . ' ('. $cat->count .')</center></a>'.$default_lang_id. ' ' .'('.$default_lang_count->count.')</div>';
}
$j++;
}
// Reset Post Data
wp_reset_query();
}
add_shortcode( 'prod_categories', 'prod_categories' );
【问题讨论】: