我从这里得到了人们的帮助,在woocommerce>“订单”表中创建了一个汇总,以仅按订单预览第一个产品的说明。通过以下代码:
现在,当我按列的值进行搜索以显示仅包含该产品说明的订单时,如何使其可搜索
我所需要做的就是使此列值可被搜索,因为它们现在不可用。
/**
* Adds 'Description' column header to 'Orders' page immediately after 'Order ID' column.
*
* @param string[] $columns
* @return string[] $new_columns
*/
function sv_wc_cogs_add_order_description_column_header( $columns ) {
$new_columns = array();
foreach ( $columns as $column_name => $column_info ) {
$new_columns[ $column_name ] = $column_info;
if ( 'order_number' === $column_name ) {
$new_columns['order_description'] = __( 'Description', 'my-textdomain' );
}
}
return $new_columns;
}
add_filter( 'manage_edit-shop_order_columns', 'sv_wc_cogs_add_order_description_column_header', 99 );
/**
* Adds 'Description' column content to 'Orders' page immediately after 'Order ID' column.
*
* @param string[] $column name of column being displayed
*/
function sv_wc_cogs_add_order_description_column_content( $column ) {
global $post;
if ( 'order_description' === $column ) {
$order = wc_get_order( $post->ID );
if( $order ) {
$first_line_item_descrp = '';
foreach ( $order->get_items( 'line_item' ) as $item_id => $item ) {
$product = $item->get_product();
$first_line_item_descrp = $product->get_description();
break;
}
echo $first_line_item_descrp;
}
}
}
add_action( 'manage_shop_order_posts_custom_column', 'sv_wc_cogs_add_order_description_column_content', 99 );
我现在希望能够通过“成功事件”进行搜索,例如,该事件是否可以通过订单中第一项产品描述生成的“ <事件>”事件中的?
答案 0 :(得分:0)
请检查以下代码。
注意:当插件更新时,此代码将自动删除。
解决方案:- 文件路径:/plugins/woocommerce/includes/data-stores/class-wc-order-data-store-cpt.php
函数名称:-search_orders()
此代码后
if (is_numeric($term)) {$order_ids[] = absint($term);}
添加此代码
$data_store = WC_Data_Store::load('product');
$product_ids = $data_store->search_products($term, ' ', true, false, '');
$custome_order_ids = $wpdb->get_col(
$wpdb->prepare(
"SELECT order_items2.order_id
FROM {$wpdb->prefix}woocommerce_order_itemmeta as order_itemmeta
JOIN {$wpdb->prefix}woocommerce_order_items as order_items2 ON order_items2.order_item_id = order_itemmeta.order_item_id
WHERE order_itemmeta.meta_value IN ('" . implode("','", $product_ids) . "') AND order_itemmeta.meta_key = %s", '_product_id'
)
);
$order_ids = array_merge($order_ids, $custome_order_ids);
注意:插件更新时,此代码将删除。