在Woocommerce管理订单列表中搜索自定义coulmn的值

时间:2019-10-22 08:07:44

标签: php wordpress woocommerce

我从这里得到了人们的帮助,在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 );

我现在希望能够通过“成功事件”进行搜索,例如,该事件是否可以通过订单中第一项产品描述生成的“ <事件>”事件中的?

屏幕截图:enter image description here

1 个答案:

答案 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);

注意:插件更新时,此代码将删除。