我正在构建自己的wordperss主题,当我在WordPress定制器上开始主题选项时,我遇到了一些麻烦。
基本上我试图创建一个textarea和我读过的东西我需要创建一个扩展类,然后在WordPress的add_control函数下调用它。
我试过这个并且在定制器模式下一切运行良好但是一旦我进入网站的任何其他部分,我就会收到此错误:
致命错误:未找到类'WP_Customize_Control'
正如我所说,它在自定义程序中100%有效,但它是自己的,但包括管理员在内的任何其他页面都会收到此消息。
这是班级:
class ublxlportfolio_textarea extends WP_Customize_Control {
public $type = 'textarea';
public function render_content() {
?>
<label>
<span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
<textarea rows="5" style="width:100%;" <?php $this->link(); ?>><?php echo esc_textarea( $this->value() ); ?></textarea>
</label>
<?php
}
}
我需要将其包装在条件标签中吗?如果是这样的话会是什么?
我这样做是错的吗?
答案 0 :(得分:13)
澄清@ Robert的正确答案:
只有在实际使用主题定制器时才会加载类WP_Customize_Control。因此,您需要在函数bind中定义您的类到'customize_register'动作。
示例:
add_action( 'customize_register', 'my_customize_register' );
function my_customize_register($wp_customize) {
//class definition must be within my_customie_register function
class ublxlportfolio_textarea extends WP_Customize_Control { ... }
//other stuff
}
答案 1 :(得分:1)
发现该类需要进入寄存器功能!
答案 2 :(得分:1)
在类定义之前需要以下行:
include_once ABSPATH . 'wp-includes/class-wp-customize-control.php';
我遇到了同样的问题并从Google登陆,希望这能帮助别人!
答案 3 :(得分:0)
提醒:如果您只是在扩展它时忘记检查WP_Customize_Control类是否存在。如果您位于未使用主题定制程序的页面中,则此提醒可能会帮助您调试此问题。由于仅在实际使用主题定制器时才加载WP_Customize_Control类。
if (class_exists('WP_Customize_Control')) {
class yourCustomControlClass extends WP_Customize_Control {
// control actions
}
}
干杯!