Я создал свой собственный класс электронной почты в WooCommerce.Поскольку в своем содержимом электронной почты мне нужен настраиваемый параметр, я добавил заполнитель с этим настраиваемым параметром в функцию триггера электронной почты wc:
public function trigger( $order_id, $firstname, $lastname, $order = false ) {
$this->setup_locale();
if ( $order_id && ! is_a( $order, 'WC_Order' ) ) {
$order = wc_get_order( $order_id );
}
if ( is_a( $order, 'WC_Order' ) ) {
$this->object = $order;
$this->recipient = $this->object->get_billing_email();
$this->placeholders['{order_date}'] = wc_format_datetime( $this->object->get_date_created() );
$this->placeholders['{order_number}'] = $this->object->get_order_number();
$this->placeholders['{full_name}'] = $firstname . ' ' . $lastname;
}
if ( $this->is_enabled() && $this->get_recipient() ) {
$this->send( $this->get_recipient(), $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() );
}
$this->restore_locale();
}
После того, как я сделал это в содержимомPHP-файл:
<?php printf( __( get_option( 'wc_custom_email_info' ) ), '{full_name}' ); ?>
В опции, которую я написал, %s
, чтобы я мог добавить полное имя в контент.Но, к сожалению, я получаю имя заполнителя, а не содержимое:
Blaaaaaaa {full_name} blaaaa
Но мне нужно это здесь:
Blaaaaaaa Joe Martin blaaaa
Обновление
Имя здесь не является именем клиента из заказа.Это имя, которое я передаю через do_action
, которое я нажимаю на кнопку.Поэтому, когда кто-то на моей странице нажимает эту кнопку, я выбираю его идентификатор пользователя и получаю имя от пользователя, который нажал кнопку.Это пользовательский триггер электронной почты, который я использую:
$user = get_userdata( get_current_user_id() );
$firstname = $user->user_firstname;
$lastname = $user->last_name;
//Trigger email sending
do_action( 'trigger_email', $order_id, $firstname, $lastname );
Затем я делаю это в классе электронной почты:
//Trigger for this email.
add_action( 'trigger_email', array( $this, 'trigger' ), 10, 10 );
После этого вы можете вернуться к функции верхнего триггера.