如何在WooCommerce下载标签展示登录用户的Gravity PDF动态链接?
实现WooCommerce「我的账户」显示用户Gravity Forms提交的PDF下载链接
1. 关于用wp_get_current_user()获取Entry ID的问题
没错,必须通过wp_get_current_user()拿到当前登录用户的ID,才能精准筛选出该用户提交的所有表单条目。Gravity Forms的每个Entry都会记录创建者ID(created_by字段),用这个字段做过滤条件就能拿到对应用户的所有提交记录。
2. 基于查询结果创建动态短码
直接写一个自定义短码函数,在函数内部完成条目查询和PDF链接生成,代码示例如下:
// 注册自定义短码,用于显示用户的Gravity PDF下载链接 add_shortcode('user_gravity_pdfs', 'display_user_gravity_pdfs'); function display_user_gravity_pdfs($atts) { // 检查用户是否登录 if (!is_user_logged_in()) { return '<p>请先登录查看您的PDF下载链接</p>'; } // 获取当前登录用户ID $current_user = wp_get_current_user(); $user_id = $current_user->ID; // 配置查询参数:替换成你的表单ID,这里假设表单ID是1 $form_id = 1; $search_criteria = array( 'status' => 'active', // 只获取已提交的有效条目 'field_filters' => array( array( 'key' => 'created_by', 'value' => $user_id, ), ), ); // 通过GFAPI查询用户的所有表单条目 $entries = GFAPI::get_entries($form_id, $search_criteria); // 如果没有条目,返回提示 if (empty($entries)) { return '<p>您还没有提交过表单,暂无PDF下载链接</p>'; } // 开始生成PDF链接列表 $output = '<ul class="user-gravity-pdfs">'; foreach ($entries as $entry) { // 用GravityPDF短码生成链接,替换成你的PDF模板ID,可自定义链接文本 $pdf_link = do_shortcode("[gravitypdf id='your-pdf-template-id' entry='{$entry['id']}' title='表单提交PDF(提交时间:{$entry['date_created']})']"); $output .= "<li>{$pdf_link}</li>"; } $output .= '</ul>'; return $output; }
注意:需要把代码里的$form_id替换成你实际的Gravity Forms表单ID,id='your-pdf-template-id'替换成你创建的Gravity PDF模板ID。
3. 展示多个PDF链接
上面的代码已经通过foreach循环遍历了用户的所有条目,每个条目生成一个PDF链接并放在<li>标签里,最终输出成无序列表。用户多次提交的话,就会显示多个下载链接,还可以通过{$entry['date_created']}显示提交时间,方便用户区分不同的PDF文件。
最后一步:在WooCommerce「我的账户」页面添加短码
进入WooCommerce后台,找到「我的账户」页面的编辑界面,在「下载」标签对应的内容区域(或页面内容中)添加短码[user_gravity_pdfs],保存后登录用户就能在「我的账户-下载」里看到自己的所有PDF下载链接了。
内容的提问来源于stack exchange,提问作者ERM
相关产品推荐
相关产品推荐

