我有一个使用定制主题的Wordpress网站。我想在管理员的某个地方添加一个功能切换(复选框设置),可以被各个主题页面读取以改变他们的行为。
实现此目的的最佳方法是什么?如果您可以包括我如何阅读该设置,我们将不胜感激。
答案 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;
?>
结果: