#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