WordPress中LearnPress课程页get_post_meta()不显示自定义字段问题
解决LearnPress课程单页无法显示自定义字段的问题
嘿,我来帮你搞定这个困扰!你已经搞定了后台自定义字段的保存,但课程前端不显示,核心原因是LearnPress的课程(lp_course)有自己的单页模板和钩子体系,和普通文章(post)的渲染逻辑不一样,直接在single.php里的代码自然不会生效。下面给你两种靠谱的解决方案:
一、用LearnPress专属钩子显示(推荐,主题更新不丢失)
LearnPress提供了很多专门用于课程页面的钩子,我们可以用钩子把自定义字段内容挂到课程页面的合适位置,不用修改模板文件:
1. 添加显示函数
把这段代码放到主题的functions.php里:
// 在课程单页显示自定义字段 function display_my_custom_course_field() { // 获取当前课程ID $course_id = get_the_ID(); // 替换成你的自定义字段meta key(要和保存时的key完全一致!) $tab1_title = get_post_meta( $course_id, 'fav_tab1_title', true ); // 如果字段有值,就输出 if ( !empty( $tab1_title ) ) { echo '<div class="custom-course-tab1" style="margin:20px 0;padding:15px;background:#f5f5f5;"> <h3>Tab 1 Title</h3> <p>' . esc_html( $tab1_title ) . '</p> </div>'; } } // 挂到课程内容之后的钩子(你可以根据需求换其他钩子) add_action( 'learn_press_after_single_course_summary', 'display_my_custom_course_field', 10 );
2. 可选:更换钩子位置
如果你想把内容放在其他位置,比如课程标题下方、课程信息区,这些LearnPress钩子可以选:
learn_press_before_single_course:课程页面最顶部learn_press_single_course_summary:课程摘要区域内learn_press_after_single_course:课程页面最底部
二、修改课程单页模板(适合需要高度自定义的场景)
如果你想直接修改模板布局,可以用主题覆盖插件模板的方式(避免插件更新丢失修改):
1. 找到并复制模板文件
- 从LearnPress插件目录里找到
templates/single-course.php - 在你的主题目录下创建
learnpress文件夹,把复制的single-course.php放进去
2. 在模板里添加字段代码
打开主题里的single-course.php,找到你想显示自定义字段的位置(比如课程描述之后),添加这段代码:
<?php // 获取自定义字段值 $tab1_title = get_post_meta( get_the_ID(), 'fav_tab1_title', true ); if ( !empty( $tab1_title ) ) : ?> <div class="custom-tab1-section"> <h4>Tab 1 Title</h4> <p><?php echo esc_html( $tab1_title ); ?></p> </div> <?php endif; ?>
关键检查点!
别忘了确认这两点,不然可能还是显示不出来:
- 字段保存逻辑正确:你的保存函数里要确保针对
lp_course类型的课程正确保存了meta值,权限判断要用LearnPress的edit_course权限(而不是普通的edit_post) - meta key完全一致:获取字段时用的
fav_tab1_title要和你后台输入框的name属性、保存时的key完全一样
内容的提问来源于stack exchange,提问作者Sajedul Islam Sajid
相关产品推荐
相关产品推荐

