Обновление шаблона электронных писем Woocommerce и получение поля из таблицы пользователей - PullRequest
1 голос
/ 13 марта 2020

Я пытался неделями, но все же я не понимаю, как изменить шаблон электронного письма для woocommerce и получить значение (user_url), которое находится в wp_users

То, что я пробовал

Прежде всего у меня есть стандартный шаблон письма " customer_processing_order " Затем, когда я нахожусь внутри этого шаблона, я пытаюсь вставить новое действие, используя это post

Итак, я понимаю, что должен добавить действие, основанное на этом посте. но я до сих пор не понимаю, в какую часть кода мне нужно его вставить.

Потому что, когда я пытаюсь добавить этот пример кода

add_action( 'woocommerce_email_after_order_table', 'lnz_hook_content', 1);
function lnz_hook_content() {

echo 'hooked'; // Test Purposes only
echo $order->user_id;

, ничего не происходит.

Я вставил этот пример кода в эту зону кода (строка 79)

do_action( 'woocommerce_email_order_details', $order, $sent_to_admin, $plain_text, $email );
add_action( 'woocommerce_email_after_order_table', 'lnz_hook_content', 1);

function lnz_hook_content( $order) {

echo 'hooked'; // Test Purposes only
echo $order->user_id;

add_action( 'woocommerce_email_order_details', 'lnz_hook_content', 1);

function lnz_hook_content( $order) {

echo 'hooked'; // Test Purposes only
echo $order->user_id;

This image does not contain

Теперь я думаю, что это не правильно, потому что электронная почта что получено, когда заказ будет обрабатываться ни "зацеплено", ни "user_id"

Я не знаю, что делать. Не имея уверенности в изменении шаблона письма, я ничего не могу сделать.

Чего я хочу достичь

Понимать, как вставить пользовательский код в шаблон электронная почта woocommerce. Это кажется простым, но я не могу найти способ сделать это.

В этом пользовательском коде выполните запрос в базе данных. Я хотел бы использовать адрес электронной почты клиента для получения user_url, который находится в таблице wp_users. В wp_user присутствует электронная почта клиента.

ОБНОВЛЕНИЕ

Здесь весь код шаблона

<?php

/**

 * Customer processing order email

 *

 * This template can be overridden by copying it to yourtheme/woocommerce/emails/customer-processing-order.php.

 *

 * HOWEVER, on occasion WooCommerce will need to update template files and you

 * (the theme developer) will need to copy the new files to your theme to

 * maintain compatibility. We try to do this as little as possible, but it does

 * happen. When this occurs the version of the template file will be bumped and

 * the readme will list any important changes.

 *

 * @see https://docs.woocommerce.com/document/template-structure/

 * @package WooCommerce/Templates/Emails

 * @version 3.7.0

 */



if ( ! defined( 'ABSPATH' ) ) {

    exit;

}



/*

 * @hooked WC_Emails::email_header() Output the email header

 */

do_action( 'woocommerce_email_header', $email_heading, $email ); ?>



<?php /* translators: %s: Customer first name */ ?>

<p><?php printf( esc_html__( 'Hi %s,', 'woocommerce' ), esc_html( $order->get_billing_first_name() ) ); ?></p>

<?php /* translators: %s: Order number */ ?>

<p><?php printf( esc_html__( 'Just to let you know &mdash; we\'ve received your order #%s, and it is now being processed:', 'woocommerce' ), esc_html( $order->get_order_number() ) ); ?></p>



<?php



/*

 * @hooked WC_Emails::order_details() Shows the order details table.

 * @hooked WC_Structured_Data::generate_order_data() Generates structured data.

 * @hooked WC_Structured_Data::output_structured_data() Outputs structured data.

 * @since 2.5.0

 */

do_action( 'woocommerce_email_order_details', $order, $sent_to_admin, $plain_text, $email );





/*

 * @hooked WC_Emails::order_meta() Shows order meta data.

 */

do_action( 'woocommerce_email_order_meta', $order, $sent_to_admin, $plain_text, $email );



/*

 * @hooked WC_Emails::customer_details() Shows customer details

 * @hooked WC_Emails::email_address() Shows email address

 */

do_action( 'woocommerce_email_customer_details', $order, $sent_to_admin, $plain_text, $email );



/**

 * Show user-defined additional content - this is set in each email's settings.

 */

if ( $additional_content ) {

    echo wp_kses_post( wpautop( wptexturize( $additional_content ) ) );

}



/*

 * @hooked WC_Emails::email_footer() Output the email footer

 */

do_action( 'woocommerce_email_footer', $email );


add_action( 'woocommerce_email_after_order_table', 'lnz_hook_content', 10, 4);
function lnz_hook_content( $order, $sent_to_admin, $plain_text, $email ) {
    if( isset( $order ) ){ // Just a safety check
        $user_id = $order->get_customer_id();
        $user_info = get_userdata( $user_id );
        echo $user_info->display_name;
    }
}

do_action( 'woocommerce_email_after_order_table', 'lnz_hook_content', 10, 4);
lnz_hook_content( $order, $sent_to_admin, $plain_text, $email )

<?>

К сожалению, электронная почта не содержит информация, захваченная в ловушке (это должно быть echo $user_info->display_name;

1 Ответ

1 голос
/ 13 марта 2020

Исходя из вашего вопроса, предполагая, что вы sh покажете информацию о пользователе в своем шаблоне электронной почты, вы можете сделать следующее.

Сначала вы можете использовать любой из хуков, доступных в шаблоне электронной почты, скажем, woocommerce_email_after_order_table крючок. Крюк имеет четыре доступных параметра: $order, $sent_to_admin, $plain_text и $email.

Вы можете использовать параметр $order.

add_action( 'woocommerce_email_after_order_table', 'lnz_hook_content', 10, 4);
function lnz_hook_content( $order, $sent_to_admin, $plain_text, $email ) {
    if( isset( $order ) ){ // Just a safety check
        $user_id = $order->get_customer_id();
        $user_info = get_userdata( $user_id );
        echo $user_info->display_name;
    }
}

Вы можете использовать get_customer_id(), чтобы получить идентификатор клиента из $order, который вас заинтересует можно использовать для получения пользовательских данных.

Протестировано, и это работает.

# ОБНОВЛЕНИЕ

Вам не нужно вносить изменения в шаблон электронной почты, поскольку он будет переопределен следующее обновление плагина WooCommerce. Крюки предоставляются третьим лицам для внесения изменений в содержимое файла. Добавьте приведенный выше код к функциям вашей темы / дочерней темы. php file

location: Theme -> functions. php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...