【问题标题】:Admin search Woocommerce order by custom field管理员按自定义字段搜索 Woocommerce 订单
【发布时间】:2016-06-21 10:48:54
【问题描述】:

我在结账时添加了一个自定义字段,我想让它成为可搜索的,以便使用它来搜索订单。 该字段是手机,目前的代码是:

function custom_admin_billing_fields( $fields ) {
    global $post;
    $order = $post->ID;
    $fields['phone']['show'] = false;
    $fields['mobile'] = array(
        'label' => __( 'Mobile', 'bootstrap' ),
        'value'=>get_post_meta( $order, '_billing_mobile', true ),
        'show'  => true
    );
    return $fields;
}
add_filter( 'woocommerce_admin_billing_fields', 'custom_admin_billing_fields',10,1 );

function custom_admin_shipping_fields( $fields ) {
    global $post;
    $order = $post->ID;
    $fields['phone']['show'] = false;
    $fields['mobile'] = array(
        'label' => __( 'Mobile', 'bootstrap' ),
        'value'=>get_post_meta( $order, '_shipping_mobile', true ),
        'show'  => true
    );

    return $fields;
}
add_filter( 'woocommerce_admin_shipping_fields', 'custom_admin_shipping_fields', 11, 1);

function woocommerce_shop_order_search_order_total( $search_fields ) {
    $search_fields[] = '_billing_mobile';
    $search_fields[] = '_shipping_mobile';

    return $search_fields;
}
add_filter( 'woocommerce_shop_order_search_fields', 'woocommerce_shop_order_search_order_total' );

搜索不适用于手机,虽然它适用于默认字段

以及前端的代码(结帐)

function custom_woocommerce_shipping_fields($fields) {
    $fields['shipping_phone']   = array(
        'label'          => __('Phone', 'woocommerce'),
        'placeholder'    => __('Phone', 'woocommerce'),
        'required'       => false,
        'class'          => array('form-row-last'),
    );

    $fields['shipping_mobile']  = array(
        'label'          => __('Mobile Phone', 'bootstrap'),
        'placeholder'    => __('Mobile Phone', 'bootstrap'),
        'required'       => true,
        'clear'          => true,
        'class'          => array('form-row'),
    );
    return $fields;
}
add_filter( 'woocommerce_shipping_fields', 'custom_woocommerce_shipping_fields');

function custom_woocommerce_billing_fields( $fields ) {
    $fields['billing_phone']['required']    = false;
    $fields['billing_mobile']   = array(
        'label'          => __('Mobile Phone', 'bootstrap'),
        'placeholder'    => __('Mobile Phone', 'bootstrap'),
        'required'       => true,
        'clear'          => true,
        'class'          => array('form-row-last'),
    );
    return $fields;
}
add_filter( 'woocommerce_billing_fields', 'custom_woocommerce_billing_fields' );

【问题讨论】:

  • 更新帖子包括前端代码
  • 不,但它们在管理订单面板中看起来很好,所以我认为它们没问题
  • 有关信息,这是 sarakinos 发现的 WooCommerce 中的一个 BUG:“它正在将搜索值转换为int 所以它们不能超过 10 位。错误已修补。肮脏的解决方案通过将 wc_order_search 中的 %%%d%% 更改为 %%%s%% 来改变 woocommerce 核心,或者等到补丁应用于生产版本“...跨度>
  • 问题解决了没有?我也在寻找通过自定义字段值进行订单搜索的解决方案

标签: php wordpress woocommerce


【解决方案1】:

我们也有同样的需求,即通过“跟踪代码”(来自 AST 插件)查找订单。

这是在搜索中添加自定义列的代码(插入到您的 functions.php 中):

function woocommerce_shop_order_search_order_tracking_code($search_fields) { 
    $search_fields[] = '_woocommerce-advanced-shipment-tracking'; 
    return $search_fields;
}
add_filter('woocommerce_shop_order_search_fields', 'woocommerce_shop_order_search_order_tracking_code');

结果:

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2016-07-28
    • 1970-01-01
    • 2021-01-18
    • 2018-09-05
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    相关资源
    最近更新 更多