Php 在WooCommerce电子邮件模板上使用的短代码中传递订单ID

Php 在WooCommerce电子邮件模板上使用的短代码中传递订单ID,php,wordpress,templates,woocommerce,shortcode,Php,Wordpress,Templates,Woocommerce,Shortcode,我无法通过快捷码在自定义woocommerce电子邮件模板中获取订单ID。它确实直接起作用 admin new order.php模板中的工作代码: echo $order->get_id(); 我下面的短代码不起作用,我不知道为什么。我的目标是最终通过快捷码将文本变量(如“Hello Firstname”)插入电子邮件模板 function custom_first_name($order, $order_id){ global $woocommerce, $post; global

我无法通过快捷码在自定义woocommerce电子邮件模板中获取订单ID。它确实直接起作用

admin new order.php
模板中的工作代码:

echo $order->get_id();
我下面的短代码不起作用,我不知道为什么。我的目标是最终通过快捷码将文本变量(如“Hello Firstname”)插入电子邮件模板

function custom_first_name($order, $order_id){
global $woocommerce, $post;
global $order_id, $order;
$order = new WC_Order( $order_id );
return $order->get_id();
}
add_shortcode( 'custom-woocommerce-name' , 'custom_first_name' );
我通过以下代码将短代码添加到in admin-new-order.php模板中:

echo do_shortcode('[custom-woocommerce-name]');

$order->get_id()
和短代码都应该输出订单id。

要从
管理新订单.php
模板中使用的短代码中获取订单id,您必须使用以下函数代码:

function wc_custom_first_name( $atts ){
    // Extract shortcode attributes
    extract( shortcode_atts( array(
        'id' => '',
    ), $atts, 'wc-custom-name' ) );

    return $id; // return order id
}
add_shortcode( 'wc-custom-name' , 'wc_custom_first_name' );
代码进入活动子主题(或活动主题)的functions.php文件

然后,您将在
admin new order.php
模板文件中使用以下内容:

echo do_shortcode("[wc-custom-name id='{$order->get_id()}']");
测试和工作

注: 传递给
admin new order.php
模板的可用参数变量是:

  • $order

  • $email\u标题

  • $附加内容

  • $sent\u to\u admin

  • $plain_text

  • $email


这太棒了!谢谢!还有一个问题:您还知道如何在ACF文本字段中使用此短代码吗?我想使用
echo get_字段('text_\u commerce_mail','option')将该字段添加到
admin new order.php
。现在,只有通过
do\u shortcode
@Bob Try to use
echo get\u字段('text\u-mail',$id)添加它,它才起作用
_字段('text_\u\u mail',$id)(无回声)