gpt4 book ai didi

php - 在 WooCommerce 订单管理页面中按订单商品 SKU 或 ID 搜索

转载 作者:可可西里 更新时间:2023-11-01 12:37:34 40 4
gpt4 key购买 nike

我想要做的是能够在 WooCommerce 订单管理页面中按订单商品 SKU 或 ID 进行搜索。

到目前为止,我发现/完成但没有成功的是 functions.php 文件中的以下内容。

add_filter( 'woocommerce_shop_order_search_fields', 'woocommerce_shop_order_search_sku' );

function woocommerce_shop_order_search_sku( $search_fields ) {

$args = array( 'post_type' => 'shop_order' );

$orders = new WP_Query( $args );

if ( $orders->have_posts() ) {
while( $orders->have_posts() ) {
$post = $orders->the_post();
$order_id = get_the_ID();
$order = new WC_Order( $order_id );
$items = $order->get_items();
foreach( $items as $item ) {
$search_order_item_sku = wp_get_post_terms( $item['product_id'], 'search_sku' );
foreach( $search_order_item_sku as $search_sku ) {
add_post_meta( $order_id, "_search_sku", $search_sku->sku );
}
}
}
};

$search_fields[] = '_search_sku';

return $search_fields;

}

我想问题出在 add_post_meta 所在行的 $search_sku 的值。

我也尝试过使用 get_sku(), $item['sku'] 但没有成功。

最佳答案

关于将额外的元数据保存到订单中,您的想法是正确的。正如 jbby 和 helgatheviking 所建议的那样,在 woocommerce 订单 api 中默认情况下没有内置的 product_id 或 sku 的 postmeta。但是,您访问和保存元数据的方法不太正确。 wp_get_post_terms 将访问自定义分类信息,而不是元数据(为此使用 get_post_meta)。您将能够使用此过滤器执行您尝试执行的操作:

add_filter( 'woocommerce_shop_order_search_fields', function ($search_fields ) {
$posts = get_posts(array('post_type' => 'shop_order'));

foreach ($posts as $post) {
$order_id = $post->ID;
$order = new WC_Order($order_id);
$items = $order->get_items();

foreach($items as $item) {
$product_id = $item['product_id'];
$search_sku = get_post_meta($product_id, "_sku", true);
add_post_meta($order_id, "_product_sku", $search_sku);
add_post_meta($order_id, "_product_id", $product_id);
}
}

return array_merge($search_fields, array('_product_sku', '_product_id'));
});

严格来说,您应该将对 add_post_meta 的调用移动到一个钩子(Hook)中,该钩子(Hook)在订单最初保存到数据库时运行——这将防止您在搜索订单时进行不必要的跑腿工作。

关于php - 在 WooCommerce 订单管理页面中按订单商品 SKU 或 ID 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28063920/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com