将全局设置(功能切换)添加到Wordpress

时间:2014-07-02 04:59:26

标签: wordpress featuretoggle

我有一个使用定制主题的Wordpress网站。我想在管理员的某个地方添加一个功能切换(复选框设置),可以被各个主题页面读取以改变他们的行为。

实现此目的的最佳方法是什么?如果您可以包括我如何阅读该设置,我们将不胜感激。

1 个答案:

答案 0 :(得分:4)

使用Theme Customization API。复选框不在默认控件中,因此为custom control has to be built

这是functions.php

/**
 * Custom controller
 * See http://ottopress.com/2012/making-a-custom-control-for-the-theme-customizer/
 */
if ( class_exists('WP_Customize_Control') ) {
    class Example_Customize_Textarea_Control extends WP_Customize_Control {
        public $type = 'checkbox';

        public function render_content() {
            ?>
            <label>
            <span class="customize-control-select"><?php echo esc_html( $this->label ); ?></span>
            <input <?php $this->link(); ?> type="checkbox" value="1" class="code" <?php checked( 1, $this->value() ); ?> />
            </label>
            <?php
        }
    }
}

/**
 * Add custom theme options
 */
function theme_options_so_24523182( $wp_customize ) {
    $wp_customize->add_section(
            'bespoke_settings',
            array(
             'title' => 'Bespoke',
             'description' => 'My custom settings',
             'priority' => 11
            )
        );
        $wp_customize->add_setting( 
            'show_header', 
            array(
                'default' => false,
            )
        );
        $wp_customize->add_control( new Example_Customize_Textarea_Control( 
            $wp_customize, 
            'show_header', 
            array(
                'label'   => 'Show header',
                'section' => 'bespoke_settings',
                'settings'   => 'show_header',
                'priority' => 8
            ) 
        ));
}
add_action( 'customize_register', 'theme_options_so_24523182' );

header.php

<?php
    $show = get_theme_mod( 'show_header' );
    if( $show ):
        echo "Hello, world!";
    endif;
?>

结果: