如何在WordPress中获取CMB2主题选项页面的选项值?
获取CMB2主题选项页面的选项值
嘿,我来帮你搞定这个问题!既然你已经用CMB2创建了主题选项页面(你的代码里option_key是yourprefix_main_options对吧?),获取这些选项值其实很简单,主要有两种靠谱的方式,我给你详细拆解:
1. 用CMB2官方推荐的cmb2_get_option()函数
CMB2专门提供了这个函数来简化选项值的获取,它会自动帮你处理默认值、数据格式,还能避免直接操作数组可能出现的报错。
函数的基本用法是:
cmb2_get_option( $option_key, $field_id, $default_value );
$option_key:就是你注册选项页面时设置的option_key,对应你代码里的yourprefix_main_options$field_id:你在CMB2字段中设置的id参数(比如你添加的输入框、开关的ID)$default_value:可选参数,如果该选项还没设置值,就返回这个默认内容
举个实际例子,假设你在选项页面里添加了一个ID为site_header_text的文本字段,要获取它的值可以这么写:
// 获取头部文本的选项值,默认值设为"我的网站" $header_text = cmb2_get_option( 'yourprefix_main_options', 'site_header_text', '我的网站' ); // 在模板中安全输出 echo esc_html( $header_text );
2. 用WordPress原生的get_option()函数
CMB2会把所有主题选项以关联数组的形式存在WordPress的wp_options表中,键名就是你的option_key。所以你也可以用WordPress自带的get_option()来获取整个选项数组,再从中提取需要的字段值。
示例代码:
// 获取整个主题选项数组,默认返回空数组避免报错 $main_options = get_option( 'yourprefix_main_options', array() ); // 提取单个字段值,先判断是否存在再取值,防止Undefined index错误 $header_text = isset( $main_options['site_header_text'] ) ? $main_options['site_header_text'] : '我的网站'; // 安全输出 echo esc_html( $header_text );
小提示
- 不管用哪种方法,在模板中输出内容时记得用
esc_html()、esc_attr()这类安全函数,防止XSS漏洞 - 如果是在主题的函数文件中使用这些代码,建议把它们放在
after_setup_theme或者init钩子里,确保CMB2已经加载完成
内容的提问来源于stack exchange,提问作者user779681
相关产品推荐
相关产品推荐

