你的问题是非常开放的.通常,Stack Overflow用于询问非常具体的问题,例如:"为什么这段代码不能按预期运行?" 或者"我应该使用哪个函数来执行[在此处插入编程语言名称]"中的XYZ任务.
说完这个 - 我们偶尔需要一些kickstart,当涉及到搞清楚过程时.所以 - 我会尽我所能回答你的问题; 没有太具体(毕竟,我不是来为你做任务;)).
你真的需要编写代码吗?:如果你想将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();
Run Code Online (Sandbox Code Playgroud)
这段代码$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
Run Code Online (Sandbox Code Playgroud)
如果你已经阅读了所有这些,现在想"我真的很困惑",我建议你花点时间了解一下你对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->loadHtml($html);
$dompdf->render();
$dompdf->stream('title.pdf');
}
}
add_action('init', 'me_post_pdf');
Run Code Online (Sandbox Code Playgroud)
在文件 single.php 添加:
<form method="POST">
<input type="submit" value="click me">
<input type="hidden" name="me_post_pdf" value="submitted">
</form>
Run Code Online (Sandbox Code Playgroud)
它可能会在安装的主题的基础上稍微弯曲
| 归档时间: |
|
| 查看次数: |
5206 次 |
| 最近记录: |