目前我正在开发WordPress主题。在我的主题中,我使用定制器API。我添加了一些控件、设置和部分。
另外,我创建了一个新的PHP文件,名为class-customizer-control.php
.在这个文件中,我将放置所有自定义控件,因此我创建了一个自定义控件(textarea):
<?php
include_once ABSPATH . \'wp-includes/class-wp-customize-control.php\';
/**
* Add Custom controls to Customizer API
*/
function bedakb_gamer_customcontrols() {
class Custom_Textarea_Control 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
}
}
}
add_action(\'customize_register\', \'bedakb_gamer_customcontrols\');
?>
接下来,我在自定义文件中添加了使用Textarea自定义控件的控件:
$wp_customize->add_control( new Custom_Textarea_Control($wp_customize, \'bedakb_ad728\', array(
\'label\' => __(\'Adsense 728x90\', \'bedakb_gamer\'),
\'section\' => \'bedakb_adsense\',
\'priority\' => 10,
)));
但当我尝试在Wp admin中打开自定义时,出现了错误:
致命错误:在C:\\xampp\\htdocs\\wp2\\wp content\\themes\\bedakb\\u gamer\\inc\\customizer中找不到类“Custom\\u Textarea\\u Control”。php在线35
SO网友:SkyShab
我不确定是否有不同的方法来实现这一点,但这是我在几个地方成功实现的一种模式。
在我的方法中,我将“add\\u控件”包含在包含自定义类的函数中。$wp\\u customize对象传递给main函数。
另外,我不知道为什么要尝试包含类wp自定义控件。php。
假设您已经在其他地方创建了“bedakb\\u adsense”部分,那么我猜您需要什么。只需将以下内容放入php文件并从函数中调用即可。php
<?php
function bedakb_gamer_customcontrols($wp_customize) {
class Custom_Textarea_Control 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
}
}
$wp_customize->add_setting( \'bedakb_ad728\', array(
\'capability\' => \'edit_theme_options\'
) );
$wp_customize->add_control( new Custom_Textarea_Control($wp_customize, \'bedakb_ad728\', array(
\'label\' => __(\'Adsense 728x90\', \'bedakb_gamer\'),
\'section\' => \'bedakb_adsense\',
\'priority\' => 10,
)));
}
add_action(\'customize_register\', \'bedakb_gamer_customcontrols\', 99);