📅  最后修改于: 2023-12-03 15:05:59.029000             🧑  作者: Mango
当你在 WooCommerce 上开发主题或插件时,目录模式是一个十分有用的功能。它可以帮助你将商品的属性进行分类组织,以便更好地展示和销售。
下面是一个 WooCommerce 目录模式的 PHP 片段,帮助你实现该功能:
/**
* Add custom product 'Size' attribute
*/
function mytheme_custom_product_attributes() {
// Define attribute
$args = array(
'label' => __('Size', 'woocommerce'),
'slug' => 'size',
'type' => 'select',
'value' => array(
'small' => __('Small', 'woocommerce'),
'medium' => __('Medium', 'woocommerce'),
'large' => __('Large', 'woocommerce')
)
);
wc_create_attribute($args);
}
add_action( 'init', 'mytheme_custom_product_attributes' );
/**
* Add 'Size' filter to archive pages
*/
function mytheme_add_size_filter() {
global $wp_query;
$args = array(
'name' => 'pa_size',
'taxonomy' => 'pa_size',
'selected' => isset($_GET['pa_size']) ? $_GET['pa_size'] : '',
'show_option_all' => __('All Sizes', 'woocommerce')
);
wp_dropdown_categories($args);
}
add_action('woocommerce_before_shop_loop', 'mytheme_add_size_filter');
/**
* Apply 'Size' filter to product archive
*/
function mytheme_apply_size_filter() {
if (isset($_GET['pa_size']) && is_tax('pa_size', $_GET['pa_size'])) {
$wp_query->query_vars['tax_query'][] = array(
'taxonomy' => 'pa_size',
'field' => 'slug',
'terms' => $_GET['pa_size']
);
}
}
add_action('woocommerce_product_query', 'mytheme_apply_size_filter');
上述代码由三个函数组成,分别是:mytheme_custom_product_attributes()
、mytheme_add_size_filter()
和 mytheme_apply_size_filter()
。
mytheme_custom_product_attributes()
这个函数定义了一个新的名为 Size
的产品属性(attribute),并添加了三个选项:Small
、Medium
和 Large
。在主题或插件的 functions.php
文件中使用 wc_create_attribute()
来创建产品属性。
mytheme_add_size_filter()
这个函数在 WooCommerce 商品归档页面上添加了一个 Size
属性过滤器。在这个过滤器中,我们使用 wp_dropdown_categories()
函数来生成一个下拉列表菜单,让用户可以选择所需的尺码值。
mytheme_apply_size_filter()
实际上,这个函数是 WooCommerce 筛选器处理的关键部分。它首先检查 URL 中是否有 pa_size
参数,如果有的话,则将此参数所代表的尺码值添加到产品查询中,以使其可以仅显示满足特定尺码值的产品。
此 WooCommerce 目录模式的 PHP 片段,提供了一个基本的结构,使你可以添加、分组和筛选你的产品。修改此代码可实现更多的定制化特性。