Php 带有$email变量参数的自定义通知问题
我有两个自定义电子邮件收发设置为Php 带有$email变量参数的自定义通知问题,php,wordpress,object,woocommerce,email-notifications,Php,Wordpress,Object,Woocommerce,Email Notifications,我有两个自定义电子邮件收发设置为wc\u shipped\u order和wc\u received\u order,效果非常好。我设置了触发器,所以当订单的状态更改为“shipped”时,它会触发shipped order电子邮件邮件 我正试图通过另一个自定义插件通过action hookwoocommerce\u email\u before\u order\u表添加跟踪发货代码,如下所示: add_action( 'woocommerce_email_before_order_table'
wc\u shipped\u order
和wc\u received\u order
,效果非常好。我设置了触发器,所以当订单的状态更改为“shipped”时,它会触发shipped order电子邮件邮件
我正试图通过另一个自定义插件通过action hookwoocommerce\u email\u before\u order\u表添加跟踪发货代码,如下所示:
add_action( 'woocommerce_email_before_order_table', 'tracking_number_email', 10, 4 );
function tracking_number_email( $order, $sent_to_admin, $plain_text, $email ) {
if( 'wc_shipped_order_email' == $email->id ){
echo '<p><strong>'.__('Australia Post Tracking Number').': </strong>' . get_post_meta( $order->get_id(), 'tracking_number', true ) . '</p>';
}
}
它不知道$email->id
是什么,我尝试过为$email
转储这些变量,但没有任何结果
有人能帮我吗?在WooCommerce中,$email
变量参数应该是一个对象,您可以在其中获取一些属性(例如代码中的id
)。抛出的错误表明它不是一个对象,因此不可能从中获取任何属性(因此id
属性也不可能)
为了避免此问题,可以使用PHP条件函数is\u object()
如下:
add_action( 'woocommerce_email_before_order_table', 'tracking_number_email', 10, 4 );
function tracking_number_email( $order, $sent_to_admin, $plain_text, $email ) {
if( is_object($email) && 'wc_shipped_order_email' == $email->id ){
$tracking_number = get_post_meta( $order->get_id(), 'tracking_number', true );
if ( ! empty($tracking_number) ) {
echo '<p><strong>'.__('Australia Post Tracking Number').': </strong>' . $tracking_number . '</p>';
}
}
}
add_action('woocommerce_-email_-before_-order_-table','tracking_-number_-email',10,4);
功能跟踪\u编号\u电子邮件($order、$sent\u to\u admin、$plain\u text、$email){
如果(是对象($email)&“wc\u已发货”\u订单\u email'==$email->id){
$tracking\u number=get\u post\u meta($order->get\u id(),'tracking\u number',true);
如果(!空($tracking_number)){
回显“”.uuu(“澳大利亚邮政跟踪编号”):“.$Tracking_u编号”。”;
}
}
}
现在应该可以正常工作了
现在,这个问题可能与插件、主题或其他自定义代码有关。根据提供的信息,没有人能猜出为什么会发生这种情况
add_action( 'woocommerce_email_before_order_table', 'tracking_number_email', 10, 4 );
function tracking_number_email( $order, $sent_to_admin, $plain_text, $email ) {
if( is_object($email) && 'wc_shipped_order_email' == $email->id ){
$tracking_number = get_post_meta( $order->get_id(), 'tracking_number', true );
if ( ! empty($tracking_number) ) {
echo '<p><strong>'.__('Australia Post Tracking Number').': </strong>' . $tracking_number . '</p>';
}
}
}