根据Woocommerce中的用户角色自定义页脚文本电子邮件通知

时间:2018-01-12 14:45:25

标签: php wordpress woocommerce user-roles email-notifications

我尝试根据订购的用户是否为批发客户来编辑Woocommerce客户电子邮件。如果他们是我想编辑页脚文本以显示不同的名称,可能会更改徽标,但此时名称更重要。

我使用woocommerce_footer_text函数进行尝试和编辑,但在测试时,页脚文字不显示。

有人可以帮忙吗?

add_filter( 'woocommerce_email_footer_text', 'woocommerce_footer_text', 10, 2 );
function woocommerce_footer_text( $get_option, $order ) {

    $page = $_GET['page'] = isset( $_GET['page'] ) ? $_GET['page'] : '';
    if ( 'wc-settings' === $page ) {
        return $recipient; 
    }

    // just in case
    if ( ! $order instanceof WC_Order ) {
        return $recipient; 
    }

    //Get the customer ID
    $customer_id = $order->get_user_id();

    // Get the user data
    $user_data = get_userdata( $customer_id );
    // Adding an additional recipient for a custom user role

    if ( in_array( 'wholesale_customer', $user_data->roles )  ) {
         $get_option['business'] = 'Store 1';
    } else {
         $get_option['business'] = 'Store 2';
    }

    return $get_option;
}

1 个答案:

答案 0 :(得分:2)

此挂钩中没有$order WC_Order个对象或订单ID。但是可以将此电子邮件通知的当前订单ID设置为全局变量,然后它在页眉和页脚中可用,其中$ order对象不存在。

您还应该检查代码 $get_option['business'] ,因为它不会返回任何内容,因为get_option( 'woocommerce_email_footer_text' )不是数组,而是字符串,所以我删除了密钥{ {1}}。看到这是钩子源代码的摘录:

['business']

以下是重新审视的代码:

<?php echo wpautop( wp_kses_post( wptexturize( apply_filters( 'woocommerce_email_footer_text', get_option( 'woocommerce_email_footer_text' ) ) ) ) ); ?>

代码进入活动子主题(或活动主题)的function.php文件。

经过测试和工作。它也适合你。