WooCommerceで商品一覧を出すときに、li の各productにcssクラスを付与していた(post_class hookを利用)のに、WooCommerceをアップデート後、使えなくなっていた。
このclassを使ってfilterしていたので、これが消えるとまずい。
原因
調査したところ、WooCommerceプラグインのこの部分の変更が原因でした(最下部):
wp-plugin-api.com バージョン間ファイル比較
改修前:
add_filter( 'post_class', 'tbs_product_class', 10, 3 );
function tbs_product_class( $classes, $class, $post_id ){
if( in_array( 'product', $classes ) ){
$concerns = get_the_terms( $post_id, 'product_concerns' );
if( $concerns ){
foreach( $concerns as $concern ){
$classes[] = 'product_concern_' . $concern->term_id;
}
}
}
return $classes;
}
改修後 (WooCommerce 3.7対応):
add_filter( 'woocommerce_post_class', 'tbs_product_class', 30, 2 );
function tbs_product_class( $classes, $product ){
// product post id: $product->get_id()
if( in_array( 'product', $classes ) ){
$concerns = get_the_terms( $product->get_id(), 'product_concerns' );
if( $concerns ){
foreach( $concerns as $concern ){
$classes[] = 'product_concern_' . $concern->term_id;
}
}
}
return $classes;
}
たしかに、post_class が使われているプラグイン一覧に、WooCommerce 3.7.* が入っていない。
