Custom Background by Page IDs

时间:2020-01-24 作者:Serdar Koçak

我使用TwentyTwent主题,并希望通过页面ID更改其背景颜色。

我不确定,但当我检查功能时。php,我看到以下与背景颜色相关的行:

    // Custom background color.
    add_theme_support(
        \'custom-background\',
        array(
            \'default-color\' => \'f5efe0\',
        )
    );

    // Add the background option.
    $background_color = get_theme_mod( \'background_color\' );
    if ( ! $background_color ) {
        $background_color_arr = get_theme_support( \'custom-background\' );
        $background_color     = $background_color_arr[0][\'default-color\'];
    }
    $editor_color_palette[] = array(
        \'name\'  => __( \'Background Color\', \'twentytwenty\' ),
        \'slug\'  => \'background\',
        \'color\' => \'#\' . $background_color,
    );
有没有什么简单的方法可以根据页面ID改变背景颜色?

当做

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

CSS在文件上生成inc/custom-css.php, 背景色在第行设置76:

$background = sanitize_hex_color_no_hash( get_theme_mod( \'background_color\' ) );

所以您可以利用theme_mod_{$name} 过滤器,用于更改get_theme_mod($name) 函数,将其添加到函数中。php文件:

add_filter(
    \'theme_mod_background_color\',
    function( $value ) {
        $custom_bg_page_ids = array( 18, 19, 20 );
        $custom_bg_color = \'ca2d2d\';
        global $post;
        if ( in_array( $post->ID, $custom_bg_page_ids ) ) {
            return $custom_bg_color;
        }
        return $value;
    }
);

SO网友:Vitauts Stočka

不是最优雅的解决方案,但您可以使用类似的解决方案

add_action(\'wp_footer\', function() {
    $post = get_post();
    if ($post && $post->ID == ... do your post selection here) {
        ?>
        <style>
        body {
            background-color: #fff !important;
        }
        </style>
        <?php

    }
});