Я разрабатываю небольшое расширение для управления ваучерами в моем магазине Woocommerce. Создание их учетной записи и повторно загрузите их при необходимости.
Рядом с каждым ваучером есть кнопка «Загрузить». При нажатии на клиент генерируется и возвращается файл PDF. Это отлично работает при использовании языка по умолчанию моего магазина, но как только я переключаюсь на английский (с «/en/" в URL), возвращаемый PDF пуст.
Здесь Код для разделения ваучеров: < /p>
function display_vouchers_in_dashboard() {
$user_id = get_current_user_id();
if ($user_id > 0) {
$args = array(
'customer_id' => $user_id,
'post_type' => 'shop_order',
'posts_per_page' => -1,
);
$orders = wc_get_orders($args);
$voucher_found = false;
if ($orders) {
echo 'Vos Vouchers';
echo '';
echo 'Date d\'achatMontantÀ l\'attention deRéférenceAction';
echo '';
foreach ($orders as $order) {
foreach ($order->get_items() as $item_id => $item) {
$product = $item->get_product();
if ($product) {
$categories = wp_get_post_terms($product->get_id(), 'product_cat');
foreach ($categories as $category) {
if ($category->slug === 'bons-cadeaux') {
$voucher_reference = wc_get_order_item_meta($item_id, '_voucher_reference', true);
$recipient_name = wc_get_order_item_meta($item_id, '_gift_card_recipient', true);
$voucher_amount = $item->get_total();
$order_date = $order->get_date_created()->date('Y-m-d');
if (!empty($voucher_reference) && !empty($recipient_name)) {
$voucher_found = true;
echo '';
echo '' . esc_html($order_date) . '';
echo '' . wc_price($voucher_amount) . '';
echo '' . esc_html($recipient_name) . '';
echo '' . esc_html($voucher_reference) . '';
echo '';
echo '';
echo '';
echo '';
echo '';
echo 'Télécharger';
echo '';
echo '';
echo '';
}
}
}
}
}
}
echo '';
echo '';
}
if (!$voucher_found) {
echo '
Vous n\'avez pas encore acheté de vouchers.
Parcourir les produits
';
}
}
}
add_action('woocommerce_account_vouchers_endpoint', 'display_vouchers_in_dashboard');
function process_voucher_download() {
if (isset($_POST['action']) && $_POST['action'] === 'download_voucher' && isset($_POST['order_id']) && isset($_POST['item_id'])) {
$order_id = absint($_POST['order_id']);
$item_id = absint($_POST['item_id']);
$user_id = get_current_user_id();
$order = wc_get_order($order_id);
if ($order && $order->get_user_id() === $user_id) {
generate_pdf($order_id, $item_id);
exit;
} else {
wp_redirect(home_url('/404'));
exit;
}
}
}
add_action('template_redirect', 'process_voucher_download');
< /code>
А вот код для моей функции Generate_pdf: < /p>
function generate_pdf($order_id, $item_id) {
$order = wc_get_order($order_id);
$current_user = wp_get_current_user();
$language = get_locale();
if ($order->get_user_id() != $current_user->ID) {
wp_die('You are not authorized to generate vouchers for this order');
}
$item = $order->get_item($item_id);
$product_id = $item->get_product_id();
$pdf = new Fpdi();
if ($language === "en_GB") {
$pdf->setSourceFile(plugin_dir_path(__FILE__) . 'template_voucher_en.pdf');
$tplIdx = $pdf->importPage(1);
if (has_term('bons-cadeaux', 'product_cat', $product_id)) {
$recipient_name = $item->get_meta('_gift_card_recipient', true);
$reference = $item->get_meta('_voucher_reference', true);
$sender_name = $order->get_billing_first_name() . ' ' . $order->get_billing_last_name();
$pdf->AddPage('L');
$pdf->useTemplate($tplIdx);
$pdf->SetFont('Helvetica', '', 14);
$pdf->SetXY(52.5, 13.5);
$pdf->Write(0, $reference);
$pdf->SetXY(93, 136.5);
$pdf->Write(0, $item->get_total() . '€');
$pdf->SetXY(118, 147);
$pdf->Write(0, $recipient_name);
$pdf->SetXY(87.5, 157.5);
$pdf->Write(0, $sender_name);
$pdf->SetXY(103, 168);
$pdf->Write(0, date('d/m/Y', strtotime('+1 year', strtotime($order->get_date_created()))));
}
} else {
$pdf->setSourceFile(plugin_dir_path(__FILE__) . 'template_voucher_fr.pdf');
$tplIdx = $pdf->importPage(1);
if (has_term('bons-cadeaux', 'product_cat', $product_id)) {
$recipient_name = $item->get_meta('_gift_card_recipient', true);
$reference = $item->get_meta('_voucher_reference', true);
$sender_name = $order->get_billing_first_name() . ' ' . $order->get_billing_last_name();
$pdf->AddPage('L');
$pdf->useTemplate($tplIdx);
$pdf->SetFont('Helvetica', '', 14);
$pdf->SetXY(53, 13.5);
$pdf->Write(0, $reference);
$pdf->SetXY(94.5, 136.5);
$pdf->Write(0, $item->get_total() . '€');
$pdf->SetXY(109, 147);
$pdf->Write(0, $recipient_name);
$pdf->SetXY(104, 157.5);
$pdf->Write(0, $sender_name);
$pdf->SetXY(109.5, 168);
$pdf->Write(0, date('d/m/Y', strtotime('+1 year', strtotime($order->get_date_created()))));
}
}
return $pdf->Output("voucher_".$reference.".pdf", "D");
}
< /code>
Когда я сбрасываю $ pdf до вывода, будь то на французском или английском языке, я получаю полный объект FPDI с правильной информацией: правый загруженный файл PDF в соответствии с языком, а также Данные клиента. < /p>
Для вашей информации я использую плагин TranslatePress для перевода сайта. может быть от?
Заранее спасибо за вашу помощь.
Подробнее здесь: https://stackoverflow.com/questions/794 ... in-english
WordPress Custom Plugin: PDF -экспорт работает на французском языке, но поврежден на английском языке ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Локализация строк APK на английском (Великобритания) и английском (США)?
Anonymous » » в форуме Android - 0 Ответы
- 21 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как мне получить названия месяцев на французском языке в PHP в этом существующем скрипте?
Anonymous » » в форуме Php - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-