Как создать PDF-файл из изображений сообщений WordPress?

#wordpress #dompdf

Вопрос:

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

Вот как я добавил кнопку во внешний интерфейс.

Это код кнопки, который я использовал, и в атрибуте name я использовал me_post_pdf функцию.

 <form method="POST">
<input type="submit" value="Download" class="btn1">
<input type="hidden" name="me_post_pdf" value="submitted">
</form>
 

В моих пользовательских плагинах functions.php файл

 
use DompdfDompdf;
use DompdfOptions;


class MyPlugin {
    private $postId;

    public function __construct($wp_query) {
        if ($wp_query amp;amp; $wp_query->post) {
            $this->postId = $wp_query->post->ID;
        }
    }

    public function getPostId() {
        return $this->postId;
    }

    public function get_car_photos( $post_id, $post_type ){
        global $wpdb;
        $photos = $wpdb->get_results( "SELECT * FROM wp_wj_photos WHERE post_id =  $post_id and post_type = '$post_type' and is_delete = 0 ORDER BY is_main DESC");
        $photos = json_decode(json_encode($photos), true);
        foreach ($photos as $key => amp;$photo) {
            $photo['photo_url'] = AT_UPLOAD_URI_THEME . '/' . $post_type . '/' . sprintf('s', substr( $photo['id'], -2, 2) ) . '/';
            $photo['photo_name'] = $photo['id'] . '.jpg';
        }
        return $photos;
    }

    public function add_button() {
        echo '<form method="POST">';
        echo '<input type="submit" value="Download" class="btn1">';
        echo '<input type="hidden" name="me_post_pdf" value="submitted">';
        echo '</form>';
    }

    public function process_pdf($content) {
        global $wp;
        $options = new Options();

        global $wp_query;
        $myPlugin = new MyPlugin($wp_query);

        $options->set('isRemoteEnabled', true);
        $dompdf = new Dompdf($options);

        foreach ($content as $key => $con) {
            $html = '<img src="'.$con['photo_url'].'original/'.$con['photo_name'].'" alt="" height="100%" width="100%">';
        }

        $dompdf->loadHtml($html);

        $dompdf->setPaper('A4', 'portrait');

        $dompdf->render();

        $dompdf->stream('test.pdf');
    }
}

add_action('wp', function () {
    global $wp_query;
    $myPlugin = new MyPlugin($wp_query);
    $myPlugin->add_button();
});

function me_post_pdf()
{
    if (isset($_POST['me_post_pdf'])) {
        global $wp_query;
        $myPlugin2 = new MyPlugin($wp_query);
        $content = $myPlugin2->get_car_photos($myPlugin2->getPostId(), 'car');
        $myPlugin2->process_pdf($content);
    }
}

add_action('init', 'me_post_pdf'); ```

For some reason this doesn't work. I'm using a library called `dompdf` to generate the pdf. Can anyone please guide me?

Thank you