在Woocommerce管理员订单列表自定义列中显示结帐字段值

最高

我被一项任务困住了。我想在woocommerce后端的车间订单列中添加一个额外的列。如果客户在结帐时选中了复选框字段,则此额外的列应显示回显输出。

因此,添加额外的列并不难。我是这样做的。

add_filter('manage_edit-shop_order_columns', 'invoice_order_overview');

function invoice_order_overview($columns) {
$new_columns = (is_array($columns)) ? $columns : array();
unset($new_columns['order_actions']);

//edit this for you column(s)
//all of your columns will be added before the actions column
$new_columns['MY_COLUMN_ID_2'] = 'Extra Column';
//stop editing

$new_columns['order_actions'] = $columns['order_actions'];
return $new_columns;
}

所以现在我想在此添加的列中显示一些内容。结帐页面上复选框的功能如下。它已经在订单编辑页面上显示了回显输出。

// Add custom checkbox field to checkout 
add_action( 'woocommerce_review_order_before_submit', 'my_custom_checkout_field' );

function my_custom_checkout_field() {
echo '<div id="my_custom_checkout_field">';

woocommerce_form_field( 'my_field_name', array(
    'type'      => 'checkbox',
    'class'     => array('input-checkbox'),
    'label'     => __('Rechnung beilegen? (Sonst nur Lieferschein)'),
),  WC()->checkout->get_value( 'my_field_name' ) );
echo '</div>';
}


// Save the custom checkout field in the order meta, when checkbox has 
been checked
add_action( 'woocommerce_checkout_update_order_meta', 'custom_checkout_field_update_order_meta', 10, 1 );

function custom_checkout_field_update_order_meta( $order_id ) {

if ( ! empty( $_POST['my_field_name'] ) )
    update_post_meta( $order_id, 'my_field_name', 
$_POST['my_field_name'] );
}


// Display the custom field result on the order edit page (backend) 
when checkbox has been checked
add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_custom_field_on_order_edit_pages', 10, 1 );

function display_custom_field_on_order_edit_pages( $order ){
$my_field_name = get_post_meta( $order->get_id(), 'my_field_name', 
true );
if( $my_field_name == 1 )
    echo '<p style="background: #dba029; padding: 1em !important; 
color: #fff; font-weight: 700;"><strong>Rechnung beilegen! </strong> 
</p>';
}

因此,我认为应该可以抓取该$my_field_name变量并将其放入这样的新额外列中。

add_action('manage_shop_order_posts_custom_column', 'invoice_order_overview_value', 2);

function invoice_order_overview_value($column) {
global $post;

if ($column == 'MY_COLUMN_ID_2') {

$my_field_name = get_post_meta( $order->get_id(), 'my_field_name', true );
   if( $my_field_name == 1 )
      echo 'Rechnung beilegen!';
   } 
}

但这在添加的列中给了我“未定义的变量”错误。

如果仅将echo 'Rechnung beilegen!';其输入函数,则将“ Rechnung beilegen”输出到MY_COLUMN_ID_2中的每一行。像这样:

add_action('manage_shop_order_posts_custom_column', 'invoice_order_overview_value', 2);

function invoice_order_overview_value($column) {
global $post;

if ($column == 'MY_COLUMN_ID_2') {

      echo 'Rechnung beilegen!';
   } 
}

所以问题是:如何根据对$my_field_nameinto所做的选择获得输出MY_COLUMN_ID_2

任何帮助表示赞赏。

LoicTheAztec

以下重新访问的代码将添加一个自定义列,并显示自定义结帐字段“封闭的发票”值:

// Add custom checkbox field to checkout
add_action( 'woocommerce_review_order_before_submit', 'my_custom_checkout_field' );

function my_custom_checkout_field() {
    echo '<div id="my_custom_checkout_field">';

    woocommerce_form_field( '_enclosed_invoice', array(
        'type'      => 'checkbox',
        'class'     => array('input-checkbox'),
        'label'     => __('Enclose invoice? (Otherwise only delivery note)'),
    ),  WC()->checkout->get_value( '_enclosed_invoice' ) );

    echo '</div>';
}

// Save the custom checkout field in the order meta, when checkbox has been checked
add_action( 'woocommerce_checkout_create_order', 'save_order_custom_meta_data', 10, 2 );
function save_order_custom_meta_data( $order, $data ) {
    if ( isset($_POST['_enclosed_invoice']) )
        $order->update_meta_data('_enclosed_invoice', '1' );
}

// Display the custom field result on the order edit page (backend) when checkbox has been checked
add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_custom_field_on_order_edit_pages', 10, 1 );
function display_custom_field_on_order_edit_pages( $order ){
    if( $my_field_name = $order->get_meta( '_enclosed_invoice' ) )
        echo '<p style="background: #dba029; padding: 1em !important; color: #fff; font-weight: 700;"><strong>Enclosed invoice!</strong></p>';
}

// Add custom column before "Actions" column in admin orders list
add_filter('manage_edit-shop_order_columns', 'add_enclosed_invoice_order_column', 10, 1 );
function add_enclosed_invoice_order_column( $columns ) {
    // Woocommerce compatibility since version 3.3
    $actions_key = isset($columns['wc_actions']) ? 'wc_actions' : 'order_actions';

    $order_actions = $columns[$actions_key];

    unset($columns[$actions_key]);

    $columns['enclosed_invoice'] = __("Enc. Invoice", "woocommerce");

    $columns[$actions_key] = $order_actions;

    return $columns;
}

// Display data to custom column in admin orders list
add_action( 'manage_shop_order_posts_custom_column' , 'display_enclosed_invoice_order_column_data' );
function display_enclosed_invoice_order_column_data( $column ) {
    global $the_order, $post;

    if( $column  == 'enclosed_invoice' ) {
        if( $enclosed_invoice = $the_order->get_meta( '_enclosed_invoice' ) ) {
            echo __("Yes", "woocommerce");
        } else {
            echo ' - ';
        }
    }
}

代码进入您的活动子主题(活动主题)的function.php文件中。测试和工作。

在此处输入图片说明

从Woocommmerce 3.3版本开始,管理订单列表操作列已重命名,'wc_actions'而不是'order_actions'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在优惠券设置中添加一个字段,并在Woocommerce管理员订单列表上显示该值

单击以在WooCommerce管理订单列表中显示文本时隐藏自定义操作按钮

在WooCommerce管理员订单页面上将产品自定义字段显示为订单项元

Woocommerce在管理员订单详细信息上显示自定义字段数据

Woocommerce 3.3管理员订单列表中的自定义订单状态背景按钮颜色

在Woocommerce管理员电子邮件通知中显示产品自定义字段值

在Woocommerce管理订单列表中显示具有“全部”自定义状态的订单

Woocommerce管理员编辑订单页面常规部分中的自定义可编辑字段

仅在WooCommerce管理员订单列表自定义列中显示特定订单状态的数据

在WordPress的管理员用户列表自定义列中显示用户元数据值

在Woocommerce管理员订单列表“订单”现有列中添加自定义字段

在Woocommerce管理订单列表中添加可排序的自定义列

在Woocommerce管理员订单列表自定义列中显示用户名

将自定义订单状态添加到WooCommerce管理员订单列表中的过滤器菜单

在Woocommerce管理员,订单和电子邮件中显示自定义付款字段

在Woocommerce管理员订单页面中保存订单项自定义字段

在Woocommerce管理员订单列表上处理多个自定义批量操作

在WooCommerce管理员订单列表中以批量操作添加自定义取消订单状态

使Woocommerce(3.8.0)管理员电子邮件中包含我在结帐页面上的自定义字段数据

在WooCommerce订单管理员列表上显示带有自定义用户元的自定义列

电子邮件,管理员订单和“谢谢”页面上的WooCommerce 4.0自定义结帐和ACF字段值

在Woocommerce管理员订单列表中显示带有作者和日期的订单注释

在WooCommerce管理员订单列表中显示每个订单的变体名称

保存结帐自定义字段值并将其显示在WooCommerce管理订单中

如何在WooCommerce管理员单笔订单中显示自定义结帐账单字段

在WooCommerce电子邮件通知中为管理员显示自定义字段

在WooCommerce订单管理员中搜索自定义字段

在 WooCommerce 管理订单列表的自定义列中显示私人和客户管理注释

在 WooCommerce 管理订单列表的自定义列中显示每个订单项目的库存数量