WooCommerce 主題開發時會用下面代碼安裝 WooCommerce 於主題中,而在 add_theme_support('woocommerce',$args)
第二個參數則是傳遞給 WooCommerce 的相關初始參數
<?php
add_theme_support( 'woocommerce', array(
'single_image_width' => 600,
'thumbnail_image_width' => 300,
'product_grid' => array(
'default_columns' => 3,
'min_columns' => 2,
'max_columns' => 5,
'default_rows' => 3,
'min_rows' => 2,
'max_rows' => 8,
),
) );
問題是這樣的,開發過程中,試圖修改商品列表欄數,修改上方代碼 default_rows 由4改為3,刷新後,產品列表卻還是4欄,後來找到原因是 add_theme_support('woocommerce',$args)
相關參數,只有在啟動主題時生效儲存,所以動態去修改它是不會被套用的。
解決方法
1.切換至其他主題
在切換回正在開發的主題,這些參數就會被更新
2.透過 filter 來改
/**
* 修改每頁顯示筆數
* @link https://v123.tw
*/
function v123_product_total_per_page( $products ) {
$products = 12;
return $products;
}
add_filter( 'loop_shop_per_page', 'v123_product_total_per_page', 30 );
/**
* 修改列表欄數量
* @link https://v123.tw
*/
function v123_product_page_columns( $columns ) {
$columns = 3;
return $columns;
}
add_filter( 'loop_shop_columns', 'v123_product_page_columns' );
參考文章:
https://github.com/woocommerce/woocommerce/issues/25332