php页面增加自选项,php-在Woocommerce中添加新的自定义默认订购目录选项

我正在尝试通过SKU获取Woocommerce的默认订单.

我已经在woocommerce设置中更改了订单,并添加了SKU,如下所示:

function sv_add_sku_sorting( $args ) {

$orderby_value = isset( $_GET['orderby'] ) ? wc_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );

if ( 'sku' == $orderby_value ) {

$args['orderby'] = 'meta_value';

$args['order'] = 'asc';

// ^ lists SKUs alphabetically 0-9, a-z; change to desc for reverse alphabetical

$args['meta_key'] = '_sku';

}

return $args;

}

add_filter( 'woocommerce_get_catalog_ordering_args', 'sv_add_sku_sorting' );

function sv_sku_sorting_orderby( $sortby ) {

$sortby['sku'] = 'Sorteer op referentie';

// Change text above as desired; this shows in the sorting dropdown

return $sortby;

}

add_filter( 'woocommerce_catalog_orderby', 'sv_sku_sorting_orderby' );

add_filter( 'woocommerce_default_catalog_orderby_options', 'sv_sku_sorting_orderby' );

在页面加载时,它仍然按受欢迎程度而不是SKU进行订购.

但是下拉列表显示按SKU排序(Sorteer op Referentie)

如果我转到另一个排序并返回,它将正确地在查询字符串中使用?orderby = sku对其进行排序.

解决方法:

更新(2018年12月)

您没有以正确的方式使用正确的钩子来通过sku获取默认订购目录.还有一些缺少的所需附加代码:

add_filter( 'woocommerce_get_catalog_ordering_args', 'enable_catalog_ordering_by_sku' );

function enable_catalog_ordering_by_sku( $args ) {

if ( isset( $_GET['orderby'] ) ) {

if ( 'sku' == $_GET['orderby'] ) {

return array(

'orderby' => 'meta_value_num',

'order' => 'ASC',

'meta_key' => '_sku',

);

}

// Make a clone of "menu_order" (default option)

elseif ( 'natural_order' == $_GET['orderby'] ) {

return array( 'orderby' => 'menu_order title', 'order' => 'ASC' );

}

}

return $args;

}

add_filter( 'woocommerce_catalog_orderby', 'add_catalog_orderby_by_sku' );

function add_catalog_orderby_by_sku( $orderby_options ) {

// Insert "Sort by product reference (sku)" and the clone of "menu_order"

return array(

'sku' => __("Sort by product reference (sku)", "woocommerce"),

'natural_order' => __("Sort by natural shop order", "woocommerce"), // <== To be renamed at your convenience

) + $orderby_options ;

}

add_filter( 'woocommerce_default_catalog_orderby', 'default_catalog_orderby_sku' );

function default_catalog_orderby_sku( $default_orderby ) {

return 'sku';

}

add_action( 'woocommerce_product_query', 'product_query_by_sku' );

function product_query_by_sku( $q ) {

if ( ! isset( $_GET['orderby'] ) && ! is_admin() ) {

$q->set( 'orderby', 'meta_value_num' );

$q->set( 'order', 'ASC' );

$q->set( 'meta_key', '_sku');

}

}

代码进入您的活动子主题(或活动主题)的function.php文件中.经过测试和工作.

uE2y5.png

标签:php,wordpress,woocommerce,product,sku

来源: https://codeday.me/bug/20191009/1878597.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值