[product_category]
で定義され/woocommerce/includes/class-wc-shortcodes.php
ているショートコードは、特にWoocommerceが絶えず進化しているため、このための優れた出発点です。
その本質は、ページ付けを行うためにいくつかの追加コードが追加され、Woocommerce設定から並べ替え順序を設定し、製品が表示可能としてマークされているかどうかを確認する標準のWP_Queryです。
したがって、ショートコード関連のコードを取り除き、特定のスラッグを持つカテゴリから表示される製品を取得する関数が必要な場合は、次のようになります。
function getCategoryProducts($category_slug) {
// Default Woocommerce ordering args
$ordering_args = WC()->query->get_catalog_ordering_args();
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'ignore_sticky_posts' => 1,
'orderby' => $ordering_args['orderby'],
'order' => $ordering_args['order'],
'posts_per_page' => '12',
'meta_query' => array(
array(
'key' => '_visibility',
'value' => array('catalog', 'visible'),
'compare' => 'IN'
)
),
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'terms' => array( esc_attr( $category_slug ) ),
'field' => 'slug',
'operator' => 'IN' // Possible values are 'IN', 'NOT IN', 'AND'.
)
)
);
if ( isset( $ordering_args['meta_key'] ) ) {
$args['meta_key'] = $ordering_args['meta_key'];
}
$products = new WP_Query($args);
woocommerce_reset_loop();
wp_reset_postdata();
return $products;
}
スラッグを渡すと、Woocommerce設定で構成したのと同じ順序を使用して、標準のワードプレス投稿コレクションが返されます。