WordPress集成TFPDF无法获取文章数据问题求助
解决思路
核心原因
WordPress的get_the_ID()、get_the_title()这类文章相关函数,依赖全局的$post对象和当前查询上下文。你的PDF生成脚本虽然加载了wp-load.php建立了数据库连接,但并没有继承页面的文章上下文,所以这些函数无法定位到当前文章,自然返回空值。
具体解决方案
1. 给PDF脚本传递当前文章ID
在触发PDF生成的按钮所在页面,把当前文章ID通过请求参数传递给脚本:
- 如果用表单提交:
<form action="你的PDF生成脚本路径.php" method="POST"> <input type="hidden" name="post_id" value="<?php echo get_the_ID(); ?>"> <button type="submit">生成PDF</button> </form> - 如果用URL跳转:
<a href="你的PDF生成脚本路径.php?post_id=<?php echo get_the_ID(); ?>">生成PDF</a>
2. 在PDF脚本中初始化文章上下文
拿到传递的文章ID后,手动初始化WordPress的文章上下文,让文章函数能正常工作:
// 获取传递的文章ID(根据你用的POST/GET方式调整) $post_id = isset($_REQUEST['post_id']) ? intval($_REQUEST['post_id']) : 0; if ($post_id && $post = get_post($post_id)) { // 初始化全局文章上下文 setup_postdata($post); // 现在可以正常调用文章相关函数 $stand = get_the_title(); $post_id = get_the_ID(); // ...其他文章数据获取操作 }
注:如果脚本后续还有其他查询操作,可在完成文章数据获取后调用
wp_reset_postdata()恢复原有上下文,单独的PDF生成脚本一般不需要这一步。
3. 直接通过ID获取文章数据(无需上下文)
如果不想依赖全局上下文,也可以直接给文章函数传入ID参数来获取数据:
$post_id = isset($_REQUEST['post_id']) ? intval($_REQUEST['post_id']) : 0; if ($post_id) { $stand = get_the_title($post_id); // 直接传入ID获取标题 $post_content = get_post_field('post_content', $post_id); // 获取文章内容 $custom_field = get_post_meta($post_id, '你的自定义字段键', true); // 获取自定义字段 }
4. 验证传递的文章ID有效性
在PDF脚本里先检查$post_id是否合法,比如用get_post()判断是否存在有效文章,避免因ID错误导致的空值问题。
内容的提问来源于stack exchange,提问作者Nelson Gomes
相关产品推荐
相关产品推荐

