• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Решено Как добавить элемент в письмо

belfer

Новичок
Здравия всем!
Есть стандартный шаблон отправки письма - подтверждения заказа:
Код:
<?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/
 * @author         WooThemes
 * @package     WooCommerce/Templates/Emails
 * @version     2.5.0
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

/**
 * @hooked WC_Emails::email_header() Output the email header
 */
do_action( 'woocommerce_email_header', $email_heading, $email ); ?>

<p><?php _e( "Your order has been received and is now being processed. Your order details are shown below for your reference:", 'woocommerce' ); ?></p>

<?php

/**
 * @hooked WC_Emails::order_details() Shows the order details table.
 * @hooked WC_Emails::order_schema_markup() Adds Schema.org markup.
 * @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 );

/**
 * @hooked WC_Emails::email_footer() Output the email footer
 */
do_action( 'woocommerce_email_footer', $email );
в письме необходимо создать ссылку с переменными для вставки через GET в форму на странице.
добавляю ссылку, к примеру:
Код:
<?php
  echo "<p><a href='index.php'>Оплата</a></p>";
?>

на выходе получаю:
Код:
<p><a style="color: #557da1;font-weight: normal;text-decoration: underline;" target="_blank" rel="noopener">Оплата</a> ?&gt;</p>
Что я не так делаю, и как правильно?
 

artemkomarov

Специалист
Местный
Чтобы передать какие то данные в шаблон письма нужно чтобы эти данные были приняты в методе класса но это если вы скажем хотите создать свой шаблон письма. Если же вы просто хотите добавить ссылку или текст или кнопку в уже существующие шаблоны писем то просто нужно определиться где именно эта информация должна отображаться. Затем привяжите свою функцию к любому action которые есть в письмах к примеру
Код:
add_action( 'woocommerce_email_before_order_table', 'add_new_stuff', 10, 2 );

ну и затем сама функция которая принимает параметры заказа из которого можно вытащить все что угодно включая мета данные

Код:
function add_new_stuff( $order, $sent_to_admin ) {
// делаем вещи с $order
}

удачи. :)
 

belfer

Новичок
ну и затем сама функция которая принимает параметры заказа из которого можно вытащить все что угодно включая мета данные
Код:
function add_new_stuff( $order, $sent_to_admin ) {
// делаем вещи с $order
}
Можно чуть подробнее, или на примере, как конкретно вытащить из $order например номер заказа и вставить его в ссылку?
Или где это можно прочитать? Ни как не могу сформулировать вопрос для поисковика.
 

artemkomarov

Специалист
Местный
Можно чуть подробнее, или на примере, как конкретно вытащить из $order например номер заказа и вставить его в ссылку?
Или где это можно прочитать? Ни как не могу сформулировать вопрос для поисковика.
Код:
function add_new_stuff( $order, $sent_to_admin ) {
// сумма заказа
$total = $order->get_formatted_order_total();

// название метода платежа 
$pay_title = $order->payment_method_title;

// и тд
}

основные методы класса которые можно вытащить тут https://docs.woocommerce.com/wc-apidocs/source-class-WC_Abstract_Order.html
 
Сверху Снизу