Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在电子商务管理订单列表自定义列中显示签出字段值_Php_Wordpress_Woocommerce_Checkout_Orders - Fatal编程技术网

Php 在电子商务管理订单列表自定义列中显示签出字段值

Php 在电子商务管理订单列表自定义列中显示签出字段值,php,wordpress,woocommerce,checkout,orders,Php,Wordpress,Woocommerce,Checkout,Orders,我被一项任务困住了。我想在woocommerce后端的shop order列中添加一个额外的列。 如果客户在签出时选中复选框字段,则此额外列应显示回显输出 因此,添加额外的列并不难。我是这样做的 add_filter('manage_edit-shop_order_columns', 'invoice_order_overview'); function invoice_order_overview($columns) { $new_columns = (is_array($columns))

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

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

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>';
}
但这在添加的列中给了我一个“未定义变量”错误

如果我只放
echo'Rechnung beilegen!'
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\u field\u name
中选择的内容获取输出到
my\u COLUMN\u ID\u 2


感谢您的帮助。

以下重新访问的代码将添加一个自定义列,并将显示自定义签出字段“随附发票”值:

//将自定义复选框字段添加到签出
添加操作('woocommerce\u review\u order\u before\u submit'、'my\u custom\u checkout\u field');
函数my\u custom\u checkout\u field(){
回声';
woocommerce\u form\u字段('随附发票',数组(
'键入'=>'复选框',
'class'=>array('input-checkbox'),
“标签”=>uuuuuuuuuuuuuuuuuuu(“附上发票”(否则仅限送货单)”,
),WC()->结帐->获取价值(“随附发票”);
回声';
}
//选中复选框后,在订单元中保存自定义签出字段
添加操作('woocommerce\u checkout\u create\u order'、'save\u order\u custom\u meta\u data',10,2);
函数save_order_custom_meta_data($order,$data){
如果(isset($邮寄[''随附发票])
$order->更新元数据(“随附发票”、“1”);
}
//选中复选框后,在订单编辑页面(后端)上显示自定义字段结果
添加操作('woocommerce\u admin\u order\u data\u after\u billing\u address','display\u custom\u field\u on\u order\u edit\u pages',10,1);
功能显示\自定义\字段\在\订单\编辑\页面上($order){
如果($my_field_name=$order->get_meta(''u Included_invoice'))
echo'

随附发票!; } //在管理订单列表中的“操作”列之前添加自定义列 添加过滤器(“管理编辑车间订单列”,“添加随附发票订单列”,10,1); 函数添加\随附\发票\订单\列($columns){ //Woocommerce自3.3版起的兼容性 $actions_key=isset($columns['wc_actions'])?'wc_actions':'order_actions'; $order_actions=$columns[$actions_key]; 未设置($columns[$actions_key]); $columns[“随附发票”]=“附件发票”、“商业发票”); $columns[$actions\u key]=$order\u actions; 返回$columns; } //将数据显示到管理订单列表中的自定义列 添加操作('manage_shop_order_posts_custom_column','display_included_invoice_order_column_data'); 功能显示\随附\发票\订单\列\数据($column){ 全球$the_订单,$post; 如果($column==“随附发票”){ 如果($enclosed\u invoice=$the\u order->get\u meta(“\u enclosed\u invoice”)){ echo(“是”、“woocommerce”); }否则{ 回声'-'; } } }

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

自Woocommerce 3.3版以来,管理订单列表操作列已被重命名为
'wc\u actions'
,而不是
'order\u actions'


在函数“invoice\u order\u overview\u value”中,尝试声明全局变量“$woocommerce”和“$order”以及“$post”。
$woocommerce
已经不再需要了…
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!';
   } 
}
// 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 ' - ';
        }
    }
}