主题选项:能够在多个预定义的标题中进行选择

时间:2016-02-17 作者:Tryna Code

我正在创建我的第一个主题,我正在使用Quark作为起始主题。

我想主题有多种选择,一个是标题选择。(假设有5个不同的标题-选中时,标题将显示站点范围。)

我还想实现各种标头,这些标头的代码在codepen上可用,但我正在努力让用户能够选择他们的标头。

假设我想首先实现此菜单:http://codepen.io/WhiteWolfWizard/pen/CJLeu.

我已经阅读了get header函数的Codex,我还看到了以下内容:

<?php
if ( is_home() ) :
    get_header( \'home\' );
elseif ( is_404() ) :
    get_header( \'404\' );
else :
    get_header();
endif;
?>
它不适合我要做的,因为它在每页的基础上显示标题。

所以我想知道:不同头的代码应该在哪里,我如何才能给用户选择头的能力?(使用选项树、定制器API或更好的解决方案(如果有)

谢谢

附言:我是这方面的初学者。

2 个回复
最合适的回答,由SO网友:dingo_d 整理而成

因此,首先需要定制器选项。你可以把这个放进去customizer.php 并将该文件包含在functions.php 或者你可以把它放进去functions.php 直接地

add_action(\'customize_register\', \'mytheme_customize_register\');

function mytheme_customize_register( $wp_customize ) {

    /**
    ------------------------------------------------------------
    SECTION: Header
    ------------------------------------------------------------
    **/
    $wp_customize->add_section(\'section_header\', array(
        \'title\'          => esc_html__(\'Header\', \'mytheme\'),
        \'description\'    => esc_attr__( \'Choose one of three different Header Styles\', \'mytheme\' ),
        \'priority\'       => 1,
    ));

        /**
        Header Styles
        **/
        $wp_customize->add_setting( \'header_styles\', array(
            \'default\'    => \'\',
        ));
        $wp_customize->add_control( \'header_styles\', array(
            \'label\'      => esc_html__( \'Header Styles\', \'mytheme\' ),
            \'section\'    => \'section_header\',
            \'type\'       => \'select\',
            \'choices\'    => array(
                \'style_1\'    => esc_html__(\'Header 1\', \'mytheme\'),
                \'style_2\'    => esc_html__(\'Header 2\', \'mytheme\'),
                \'style_3\'    => esc_html__(\'Header 3\', \'mytheme\'),
            ),
        ));

}
这将在自定义程序中为您提供下拉设置。

enter image description here

有了它,无论标题元素标记在哪里<header> 如果需要,可以添加任何样式,甚至包括单独的文件。

假设您的标头位于名为header_style_1.php 位于partials 文件夹,并包含在header.php 文件为

get_template_part(\'partials/header_style_1);
您可以添加文件header_style_2.phpheader_style_3.php 在你的header.php 只需添加:

$header_style = get_theme_mod(\'header_styles\', \'style_1\');

get_template_part(\'partials/header_\'.$header_layout);
这将获取您为标头创建的任何模板。

希望这有帮助。

SO网友:тнє Sufi

使用选项树,您可以这样使用它:

假设您将提供5种不同的标题设计。创建5个头文件:

标题。php标题二。php标题三。php标题四。php标题五。php现在,您可以通过以下方式进行检查:

if (ot_get_option(\'your_header_selection_key\') == \'one\'){
    get_header();
} elseif (ot_get_option(\'your_header_selection_key\') == \'two\'){
    get_header(\'two\');
} elseif (ot_get_option(\'your_header_selection_key\') == \'three\'){
    get_header(\'three\');
} elseif (ot_get_option(\'your_header_selection_key\') == \'four\'){
    get_header(\'four\');
} elseif (ot_get_option(\'your_header_selection_key\') == \'five\'){
    get_header(\'five\');
}
您可以将这些代码包装在函数中functions.php 并从页面模板调用,而不是将它们写入每个模板文件。

这只是一个想法。您可以使用Customizer API 如果不使用选项树,也可以使用相同的想法。