要按照 WooCommerce 产品的自定义属性进行排序,可以使用以下代码示例:
// 注册自定义属性
function custom_attribute_register() {
global $wpdb;
$wpdb->query("ALTER TABLE {$wpdb->prefix}woocommerce_attribute_taxonomies ADD `attribute_custom` int(1) DEFAULT 0");
}
add_action( 'init', 'custom_attribute_register' );
// 显示自定义属性在 WooCommerce 后端
function custom_attribute_type( $types ) {
$types['custom'] = __( 'Custom', 'woocommerce' );
return $types;
}
add_filter( 'woocommerce_product_attribute_types', 'custom_attribute_type', 99, 1 );
// 显示自定义属性选项在 WooCommerce 后端
function custom_attribute_type_options() {
global $woocommerce, $wpdb;
$table_name = $wpdb->prefix . 'woocommerce_attribute_taxonomies';
$attribute_id = absint( get_the_terms( $the_id, 'pa_custom' )[0]->term_id );
$attribute_custom = $wpdb->get_var( "SELECT attribute_custom FROM {$table_name} WHERE attribute_id = {$attribute_id}" );
woocommerce_wp_checkbox(
array(
'id' => 'attribute_custom',
'label' => __( 'Custom', 'woocommerce' ),
'value' => $attribute_custom,
'desc_tip' => true,
'description' => __( 'Enable custom attribute.', 'woocommerce' ),
)
);
}
add_action( 'woocommerce_after_product_attribute_settings', 'custom_attribute_type_options', 10, 1 );
// 保存自定义属性选项
function save_custom_attribute_type_options( $term_id, $i, $name ) {
global $wpdb;
if ( isset( $_POST['attribute_custom'][ $i ] ) ) {
$wpdb->query( "UPDATE {$wpdb->prefix}woocommerce_attribute_taxonomies SET attribute_custom = 1 WHERE attribute_id = {$term_id}" );
} else {
$wpdb->query( "UPDATE {$wpdb->prefix}woocommerce_attribute_taxonomies SET attribute_custom = 0 WHERE attribute_id = {$term_id}" );
}
}
add_action( 'woocommerce_attribute_added', 'save_custom_attribute_type_options', 10, 3 );
add_action( 'woocommerce_attribute_updated', 'save_custom_attribute_type_options', 10, 3 );
// 对具有自定义属性的产品进行排序
function custom_attribute_sort( $query ) {
if ( !is_admin() && $query->is_main_query() && is_shop() ) {
$query->set( 'meta_key', 'pa_custom' );
$query->set( 'orderby
上一篇:按照自定义属性对枚举进行排序