定制器API-类不存在错误

时间:2014-11-15 作者:Belmin Bedak

目前我正在开发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

2 个回复
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);

SO网友:Belmin Bedak

有两个问题。

第一:我没有为自定义控件添加设置

$wp_customize->add_setting( \'bedakb_ad728\', array(
        \'capability\'  => \'edit_theme_options\'
));
第二:进入功能。php文件customizer.php 之前已包含class-customizer-control.php

require get_template_directory() . \'/inc/class-customizer-control.php\';
require get_template_directory() . \'/inc/customizer.php\';

结束

相关推荐