2016-08-02 2 views
1

Так что я хочу, чтобы на моих сообщениях WordPress была кнопка, которая преобразует сообщение в PDF. Я нашел domPDF, но я не уверен, как его реализовать с помощью WordPress?Как использовать domPDF с WordPress

Я знаю, что с плагином будет проще, но я хочу сделать это без плагина.

Может кто-нибудь объяснить мне, как я могу это реализовать? Thanks

+0

Вы хотите эту функциональность в области администрирования или интерфейса? –

+0

@MatteoEnna forntend, поэтому каждый может скачать сообщение в формате PDF – Kierenblade

ответ

1

Скопируйте каталог dompdf в тему.

в function.php во вставке каталога темы:

function me_post_pdf(){ 
    if (isset($_POST['me_post_pdf'])){ 
     include 'dompdf-master/autoload.inc.php'; 
     global $wp; 
     $current_url = home_url(add_query_arg(array(),$wp->request)); 

     $html = file_get_contents($current_url); 

     $options = new Options(); 
     $options->set('A4','potrait'); 
     $options->set('enable_css_float',true); 
     $options->set('isHtml5ParserEnabled', true); 

     $dompdf = new DOMPDF($options); 
     $dompdf->load_html($html); 

     $dompdf->render(); 

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

add_action('init', 'me_post_pdf'); 

в файле single.php добавить:

<form> 
    <input type="submit" value="click me"> 
    <input type="hidden" name="me_post_pdf" value="submitted"> 
</form> 

Это может немного cambire в базе темы установлен

+0

Отличное объяснение! Спасибо. Просто быстрый вопрос, какой файл domPDF мне нужно включить? Файл autoload.inc.php? Потому что, когда я нажимаю на кнопку на сообщении, ничего не происходит – Kierenblade

+0

autoload.inc.php :) –

+0

Просто убедитесь, что вы также установили метод форм для публикации, поскольку он «получает» по умолчанию –

4

У вас вопрос очень открытый. Как правило, переполнение стека задает вопросы по очень конкретным вещам, например: «Почему этот фрагмент кода работает не так, как ожидалось?» или «Какую функцию я должен использовать для выполнения задачи XYZ в [insert language language name here]».

Сказав это - мы все время нуждаемся в кикстарте, когда дело доходит до выяснения процесса. Итак, я отвечу на ваш вопрос, насколько смогу; не будучи слишком конкретным (в конце концов, я не здесь, чтобы выполнить вашу задачу для вас;)).

Вам действительно нужно что-то кодировать ?: Если вы хотите преобразовать сообщение WordPress в PDF, возможно, вы собираетесь заново изобрести колесо. Вот два плагина, которые я нашел в верхней части поиска Google (я никогда не использовал их, и не полностью прочитайте документацию):

Они могли бы сделать именно то, что вам нужно, без необходимости вникать в свое собственное кодирование.

«Я только что сказал, что не хочу использовать плагин»: ОК, никаких проблем. Но я предупреждаю вас, чтобы это было осторожно, если это так. WordPress использует плагины для расширения его функциональности по ряду очень веских причин.

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

Как правило, если вы ищете, чтобы что-то изменить (да, в данном случае - вы, вы добавляете что-то совершенно новое, что WordPress изначально не предназначалось) - тогда вы должны поместить это в плагин.

Если, с другой стороны, ваши изменения были небольшими и только изменили настройки по умолчанию (например, изменили порядок сортировки постов по умолчанию в цикле) - тогда это было бы прекрасно добавить в файл functions.php вашей темы.

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

ОК - спасибо за головы. Теперь дайте мне ответ. Какой бы вариант вы ни выбрали (создание плагина, создание дочерней темы или изменение основной темы) - основные шаги для достижения того, что вам нужно, более или менее одинаковы.

Предполагая, что вы ознакомились с документацией DOMPDF, вы будете знать, что это довольно просто, чтобы получить его порождающие PDF документы:

// EXAMPLE TAKEN FROM https://github.com/dompdf/dompdf 
// reference the Dompdf namespace 
use Dompdf\Dompdf; 

// instantiate and use the dompdf class 
$dompdf = new Dompdf(); 
$dompdf->loadHtml('hello world'); 

// (Optional) Setup the paper size and orientation 
$dompdf->setPaper('A4', 'landscape'); 

// Render the HTML as PDF 
$dompdf->render(); 

// Output the generated PDF to Browser 
$dompdf->stream(); 

Кусок кода, который говорит $dompdf->loadHtml('hello world');, где вы собираетесь хотите ввести свою разметку HTML.

Самый простой вариант для вас на этом этапе - создать шаблон для перехода к функции loadHtml DomPDF. Шаблон будет содержать заголовок и содержание сообщения.

Код, который вы пишете, будет выполнен из экземпляра сообщения, которое вы хотите преобразовать (если вам это неинтересно), я предлагаю взглянуть на WordPress Codex). Ниже приведен пример того, что вы могли бы рассмотреть дела:

// DomPDF will have already been initialised at this point in the code. 

// Create a function that DomPDF can reference, for ease. 
function grabPost() { 

// Hook into loop (don't just copy and paste this. Read the codex!) 
global $post; 

// Creating a really simple template to pass to DomPDF 
$title = '<h1>'.$post->post_title.'</h1>'; 
$content = '<article>'.$post->post_content.'</article>'; 

$passing = $title.$content; 

return $passing; 
} 

// Pass our generated template into DomPDF 
$dompdf->loadHtml(grabPost()); 

// Rendering PDF and outputting to browser happens below this line 

Если вы прочитали все это и теперь думаю, что «я действительно путают», я бы посоветовал потратить некоторое время отрабатывает на знание как структурируется WordPress. Потратьте немного времени и экспериментируйте.

Надеюсь, это поможет :)

+0

Спасибо Алекс, очень полезная информация там, будет определенно кисть на знание WordPress :) – Kierenblade

+0

Добро пожаловать :) –

Смежные вопросы