MPDF Wordpress тянуть в переменных - PullRequest
0 голосов
/ 10 февраля 2020

Я использую MPDF с Wordpress и ACF для создания ваучеров. Я хочу нажать кнопку на моем типе сообщения, чтобы создать PDF (это работает). Затем я хочу перетащить переменные в PDF, чтобы заполнить его динамическим содержимым c из моего пользовательского типа записи и расширенных настраиваемых полей, в нем не отображаются ошибки, значения просто пустые. Это мой код до сих пор:

Кнопка на сообщении:

<a href="<?php get_bloginfo('url'); ?>?offer=<?php echo $post->ID ?>" download>Download The Voucher</a>

Функции. php код для создания PDF:

add_action('init', 'congres_redirect');

function congres_redirect() {
  if(isset($_GET['offer'])) {
    $restName = get_field('restaurant_name', $post->ID);
    $image = get_field('restaurant_image', $post->ID);
      view_conferinta();

  }
}

function view_conferinta() {

$output = '<html>
<head><title>Voucher Download</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head>
<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Open+Sans" />
<style>
.voucher-content {
padding: 20px;
}
.inner-voucher {
padding: 20px;
border: solid 1px #000;
}

</style>
<body>';

 $output .= ' 

 <div class="voucher-content" style="font-family:chelvetica">
    <div class="inner-voucher">
       <img src=".$image." alt="Logo" style=" margin: 0;" />
       <h1>Voucher Title</h1>
        <p>Voucher Description</p>
        <p>Voucher Code: EL-200DEG07022020-123AB</p>

        <p>Restaurant Name:'.$restName.'</p>
        <p>This is my static voucher template</p>
        <p>POST ID:'.$post->ID.'</p>
    </div>
 </div>

 ';

$output .= ' 
</body>
</html>';


require_once __DIR__ . '/mpdf/vendor/autoload.php';


$mpdf = new \Mpdf\Mpdf(['debug' => true]);
$mpdf->WriteHTML($output);
$mpdf->Output('my-voucher.pdf','I');
//$mpdf->Output($pdfheader.'.pdf', 'D');
exit;
}

Это генерирует PDF но все содержимое динамического c пусто. Что я делаю не так?

1 Ответ

1 голос
/ 10 февраля 2020

Вы не передаете динамические переменные c в функцию, создающую вывод. Вам также нужно объявить глобальную переменную $ post

Изменить

function view_conferinta() {

$output = '<html>

на

function view_conferinta(restName, $image) {
global $post;

$output = '<html>

Затем добавить глобальную запись в вашу функцию инициализации:

function congres_redirect() {

  if(isset($_GET['offer'])) {
    global $post; //ADD THIS
    $restName = get_field('restaurant_name', $post->ID);
    $image = get_field('restaurant_image', $post->ID);
      view_conferinta();

  }
}

...