如何将css选项添加到标题图像定制器?

时间:2016-01-14 作者:Clinton Green

我添加了Custom Header 主题选项Rowling theme. 它工作得很好,但我想通过在定制器中添加CSS控件来扩展它,以获得背景大小和背景位置。

请有人告诉我怎样才能做到这一点。

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

所以我猜您已经在子主题中注册了自定义标题functions.php 文件:

add_theme_support( \'custom-header\' );
下一个locate the customizer section 并为主题定制器附加您自己的设置/控件。假设我们要注册background_positionbackground_size 并将其存储在阵列中custom_header_meta:

add_action( \'customize_register\', \'wpse_customize_custom_header_meta\' );
function wpse_customize_custom_header_meta( \\WP_Customize_Manager $wp_customize ) {

    $wp_customize->add_setting(
        \'custom_header_meta[background_position]\',
        array(
            \'default\'    => \'left\',
            \'capability\' => \'edit_theme_options\',
            \'type\'       => \'option\'
        )
    );

    $wp_customize->add_control(
        \'custom_header_background_position\',
        array(
            \'settings\' => \'custom_header_meta[background_position]\',
            \'label\'    => __( \'Background position:\', \'textdomain\' ),
            \'section\'  => \'header_image\',
            \'type\'     => \'select\',
            \'choices\'  => array(
                \'right\' => \'right\',
                \'left\'  => \'left\'
            )
        )
    );

    $wp_customize->add_setting(
        \'custom_header_meta[background_size]\',
        array(
            \'default\'    => \'auto\',
            \'capability\' => \'edit_theme_options\',
            \'type\'       => \'option\'
        )
    );

    $wp_customize->add_control(
        \'custom_header_background_size\',
        array(
            \'settings\' => \'custom_header_meta[background_size]\',
            \'label\'    => __( \'Background size:\', \'textdomain\' ),
            \'section\'  => \'header_image\',
            \'type\'     => \'select\',
            \'choices\'  => array(
                \'auto\'    => \'auto\',
                \'cover\'   => \'cover\',
                \'contain\' => \'contain\'
            )
        )
    );

}
我想你会明白的;您可以随意使用此字段或添加更多字段。检查examples provided in the Codex 供参考。

Customizer controls

之后,我们可以使用wp_add_inline_style 功能:

add_action( \'wp_enqueue_scripts\', \'wpse_rowling_inline_styles\' );
function wpse_rowling_inline_styles() {

    // Get custom header meta from customizer with defaults.
    $default_header_meta = array(
        \'background_position\' => \'left\',
        \'background_size\'     => \'auto\'
    );
    $header_meta = get_option( \'custom_header_meta\', $default_header_meta );

    // Render header meta as CSS parameters.
    $header_styles = \'\';
    foreach ( $header_meta as $key => $val ) {
        $header_styles .= str_replace( \'_\', \'-\', $key ) . \':\' . $val . \';\';
    }

    // Render header image as CSS parameters.
    if ( get_header_image() ) {
        $header_image = get_theme_mod( \'header_image_data\' );
        $header_styles .= \'background-image:url(\' . $header_image->url . \');\';
        $header_styles .= \'width:\' . (string) $header_image->width . \'px;\';
        $header_styles .= \'height:\' . (string) $header_image->height . \'px;\';
    }

    // Finally render CSS selector with parameters.
    $custom_css = ".header_image { $header_styles }";

    wp_add_inline_style( \'rowling_style\', $custom_css );

}
现在,您应该可以在类中看到元素的样式header_image 在源代码中以及实时预览中的渲染版本中,除了rowling自定义项之外。

Customizer styles

Further reading: 同时检查主题支持custom-background 因为这为图像样式提供了开箱即用的基本支持(默认情况下,在自定义程序中不可用)。

相关推荐

Repeated headers in wp_mail

由于标记原因,我多次将自定义标头传递给wp_mail(), 但实际上只有头的最后一个实例被发送。看来wp_mail() 正在筛选自定义标头,以便只发送唯一的标头。我相信这是因为wp_mail 函数定义(wp includes/pluggable.php,第173行)自定义头通过添加到关联数组(第303行)进行处理: $headers[trim( $name )] = trim( $content ); 有没有一种方法可以在不修改wp_mail 功能本身?WP Codex for wp_mai