【问题标题】:Display a custom meta field in Woocommerce admin orders list and make it searchable在 Woocommerce 管理订单列表中显示自定义元字段并使其可搜索
【发布时间】:2018-03-22 05:08:25
【问题描述】:

我们使用下面的 function.php 代码在结帐时提供多选字段。我们将其添加到订单页面并将其包含在电子邮件中。

我们如何将它也包含在 ORDERs 概览管理页面中,使其可搜索和排序?

// add select box for platform used at checkout
add_action('woocommerce_after_order_notes', 'wps_add_select_checkout_field');
function wps_add_select_checkout_field( $checkout ) {
    echo '<h3>'.__('').'</h3>';
    woocommerce_form_field( 'platform', array(
        'type'          => 'select',
        'class'         => array( 'wps-drop' ),
        'label'         => __( 'On which platform will you be using it?' ),
        'options'       => array(
            'blank'     => __( '-- Choose an option --', 'wps' ),
            'app1'  => __( 'app1', 'wps' ),
            'app2'  => __( 'app2', 'wps' ),
            'app3'  => __( 'app3', 'wps' )
        )
    ), $checkout->get_value( 'platform' ) );
}

// Process the checkout
 add_action('woocommerce_checkout_process', 'wps_select_checkout_field_process');
 function wps_select_checkout_field_process() {
    global $woocommerce;

    // Check if set, if its not set add an error.
    if ($_POST['platform'] == "blank")
        wc_add_notice( '<strong>Please select your primary trading platform that you will be using with our strategy</strong>', 'error' );
 }


 // Update the order meta with field value
 add_action('woocommerce_checkout_update_order_meta', 'wps_select_checkout_field_update_order_meta');
 function wps_select_checkout_field_update_order_meta( $order_id ) {
     if ($_POST['platform']) update_post_meta( $order_id, 'platform', esc_attr($_POST['platform']));
 }

 // Display field value on the order edition page
add_action( 'woocommerce_admin_order_data_after_billing_address', 'wps_select_checkout_field_display_admin_order_meta', 10, 1 );
function wps_select_checkout_field_display_admin_order_meta($order){
    echo '<p><strong>'.__('Primary Platform').':</strong> ' . get_post_meta( $order->id, 'platform', true ) . '</p>';
}

// Add selection field value to emails
add_filter('woocommerce_email_order_meta_keys', 'wps_select_order_meta_keys');
function wps_select_order_meta_keys( $keys ) {
    $keys['platform:'] = 'platform';
    return $keys;
}

【问题讨论】:

    标签: php wordpress search woocommerce orders


    【解决方案1】:

    这是在管理员 WooCommerce 订单列表中添加自定义列“平台”并在搜索中添加此自定义字段元键的方法:

    // ADDING A CUSTOM COLUMN TITLE TO ADMIN ORDER LIST
    add_filter( 'manage_edit-shop_order_columns', 'custom_shop_order_column', 12, 1 );
    function custom_shop_order_column($columns)
    {
        // Set "Actions" column after the new colum
        $action_column = $columns['order_actions']; // Set the title in a variable
        unset($columns['order_actions']); // remove  "Actions" column
    
    
        //add the new column "Platform"
        $columns['order_platform'] = '<span>'.__( 'Platform','woocommerce').'</span>'; // title
    
        // Set back "Actions" column
        $columns['order_actions'] = $action_column;
    
        return $columns;
    }
    
    // ADDING THE DATA FOR EACH ORDERS BY "Platform" COLUMN
    add_action( 'manage_shop_order_posts_custom_column' , 'custom_order_list_column_content', 10, 2 );
    function custom_order_list_column_content( $column, $post_id )
    {
    
        // HERE get the data from your custom field (set the correct meta key below)
        $platform = get_post_meta( $post_id, 'platform', true );
        if( empty($platform)) $platform = '';
    
        switch ( $column )
        {
            case 'order_platform' :
                echo '<span>'.$platform.'</span>'; // display the data
                break;
        }
    }
    
    // MAKE 'PLATFORM' METAKEY SEARCHABLE IN THE SHOP ORDERS LIST
    add_filter( 'woocommerce_shop_order_search_fields', 'platform_search_fields', 10, 1 );
    function platform_search_fields( $meta_keys ){
        $meta_keys[] = 'platform';
        return $meta_keys;
    }
    

    代码进入您的活动子主题(活动主题或任何插件文件)的 function.php 文件中。

    经过测试并且有效。

    【讨论】:

      猜你喜欢
      • 2016-07-28
      • 1970-01-01
      • 1970-01-01
      • 2021-04-12
      • 2020-11-11
      • 2020-10-12
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      相关资源
      最近更新 更多