求助:如何在LearnPress插件中为自定义标签添加后台文本字段
解决LearnPress自定义标签页对应后台文本字段的问题
我来帮你搞定这个问题!要给新增的「Entry Requirements」标签页在后台课程编辑界面添加对应的文本输入字段,你可以通过以下步骤实现,主要用到LearnPress的钩子和WordPress的元字段功能:
步骤1:在后台课程编辑页面添加自定义字段
你需要在主题的functions.php文件或者自定义插件里添加以下代码,用来在课程编辑界面插入一个可编辑的文本区域:
// 向课程编辑页面添加自定义元字段 add_action( 'learn_press_course_settings_meta_box', 'add_entry_requirements_meta_field' ); function add_entry_requirements_meta_field() { global $post; // 获取已保存的元字段值,用于回显 $entry_requirements = get_post_meta( $post->ID, '_lp_entry_requirements', true ); ?> <div class="lp-metabox-content"> <h4><?php esc_html_e( 'Entry Requirements', 'your-text-domain' ); ?></h4> <textarea name="lp_entry_requirements" rows="6" style="width:100%;"><?php echo esc_textarea( $entry_requirements ); ?></textarea> <p class="description"><?php esc_html_e( '填写该课程的入门要求,内容会同步显示到前端的Entry Requirements标签页', 'your-text-domain' ); ?></p> </div> <?php }
步骤2:保存自定义字段的值
添加保存钩子,确保后台填写的内容能被正确保存到数据库:
// 保存自定义元字段的值 add_action( 'learn_press_save_course', 'save_entry_requirements_meta_field' ); function save_entry_requirements_meta_field( $post_id ) { // 权限与请求验证 if ( ! current_user_can( 'edit_post', $post_id ) ) { return; } if ( isset( $_POST['lp_entry_requirements'] ) ) { update_post_meta( $post_id, '_lp_entry_requirements', sanitize_textarea_field( $_POST['lp_entry_requirements'] ) ); } else { delete_post_meta( $post_id, '_lp_entry_requirements' ); } }
步骤3:在前端标签页渲染保存的内容
如果你之前已经通过钩子添加了「Entry Requirements」标签页,只需要修改对应的内容回调部分,调用保存的元字段值即可:
// (如果未添加标签页,先执行这段添加标签页的代码) add_filter( 'learn_press_course_tabs', 'add_entry_requirements_tab' ); function add_entry_requirements_tab( $tabs ) { $tabs['entry_requirements'] = array( 'title' => esc_html__( 'Entry Requirements', 'your-text-domain' ), 'content' => 'render_entry_requirements_tab_content', // 内容回调函数 'priority' => 20, // 调整标签在前端的显示顺序 ); return $tabs; } // 标签页内容渲染回调 function render_entry_requirements_tab_content() { global $post; $entry_requirements = get_post_meta( $post->ID, '_lp_entry_requirements', true ); if ( ! empty( $entry_requirements ) ) { echo wpautop( esc_html( $entry_requirements ) ); // 自动添加段落格式,优化显示 } else { echo esc_html__( '暂无入门要求信息', 'your-text-domain' ); } }
注意事项
- 记得把代码里的
your-text-domain替换为你的主题或自定义插件的文本域,方便后续国际化适配。 - 测试时先在后台编辑课程填写内容,刷新前端课程页面,确认内容是否正常显示。
- 如果之前已经添加过标签页代码,只需替换内容回调部分即可,无需重复添加标签页注册的钩子。
内容的提问来源于stack exchange,提问作者SAYED RAHMAN
相关产品推荐
相关产品推荐

