所以我想在我的WordPress帖子上有一个按钮,将帖子转换为PDF。我发现domPDF,但我不知道如何使用WordPress实现它?如何使用domPDF和WordPress
我知道使用插件会更容易,但是我想在没有插件的情况下使用插件。
有人可以向我解释我可以如何实现这个? 谢谢
所以我想在我的WordPress帖子上有一个按钮,将帖子转换为PDF。我发现domPDF,但我不知道如何使用WordPress实现它?如何使用domPDF和WordPress
我知道使用插件会更容易,但是我想在没有插件的情况下使用插件。
有人可以向我解释我可以如何实现这个? 谢谢
复制主题中的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安装
优秀的解释!谢谢。只是一个简单的问题,我需要包含哪个domPDF文件? autoload.inc.php?因为当我点击帖子上的按钮没有任何反应 – Kierenblade
autoload.inc.php :) –
只要确保也设置你的表单方法发布,因为它是默认“获得” –
你的问题是非常开放的。通常堆栈溢出是针对非常具体的事情提出问题,例如:“为什么这段代码不能按预期工作?”或“在[在此处插入编程语言名称]”执行XYZ任务时应使用哪个函数。
话虽如此 - 我们都偶尔需要一点kickstart,当涉及到搞清楚过程。所以 - 我会尽我所能回答你的问题;而不是太具体(毕竟,我不是在这里为你做你的任务;))。
你真的需要编码吗?:如果你正在寻找一个WordPress的博客转换为PDF,你可能会重新发明轮子。这里有两个插件,我发现在谷歌搜索的顶部(我从来没有使用过,并没有充分阅读他们的文档):
他们可能会做正是你所需要的,而不必深入编码你自己的东西。
“我刚才说我不想用插件”:好的,没问题。但是,如果情况确实如此,我警告你谨慎行事。 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标记。
在这个阶段最简单的选择是构建一个模板传递给DomPDF的loadHtml函数。该模板将包含帖子的标题和内容。
您编写的代码将从您希望转换的帖子的实例中执行(如果这对您没有意义 - 我建议看看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是如何构建的。花点时间和实验。
我希望这有助于:)
谢谢亚历克斯,非常有用的信息,将肯定刷我的WordPress的知识:) – Kierenblade
不客气:) –
你想要在管理区域或前端使用此功能吗? –
@MatteoEnna forntend,所以任何人都可以下载该文章作为PDF – Kierenblade