如何从自定义插件设置页面更改CSS颜色

时间:2020-11-16 作者:Michael

我有一个自定义的WordPress插件,它具有多种设置,可以在多个网站上使用。我还在所有这些页面上使用了一些相同的第三方插件。我希望能够以同样的方式设计它们,但使用不同的颜色。虽然我可以将CSS添加到每个站点,但对于一些非技术管理员来说,通过CSS并在正确的类上更改十六进制代码是很困难的。我正试图找出最好的方法来做到这一点。以下是我到目前为止研究的内容:

我知道我可以用PHP更改类,但我不能用这种方式更改第三方插件上的类尝试将CSS文件转换为带有CSS类型头的PHP文件,但除非我同时更新htaccess文件,否则它似乎不起作用。我不想对每个站点都这样做,我看到插件一直在更改其他插件的颜色,所以我知道不更改htaccess文件也是可能的

  • 我尝试在函数内外通过PHP添加样式,但如果它在函数外,并且在函数内,则会出现错误:
    • add_action( \'init\', \'getCssOptionsUM\' );
      function getCssOptionsUM(){
         // ACCOUNT PAGE: Menu Background Color
         if (get_option(\'eri_um_account_menu_bg\') != \'\') {
             echo \'<style>.um-account-side li { background: \'.get_option(\'eri_um_account_menu_bg\').\' !important; }</style>\';
         }
         // ACCOUNT PAGE: Menu Background Hover Color & Text Hover Color
         if (get_option(\'eri_um_account_menuh_bg\') != \'\') {
             echo \'<style>.um-account-side li:hover > a, .um-account-side li:hover > a .um-account-icontip {background: \'.get_option(\'eri_um_account_menuh_bg\').\' !important; }</style>\';
         }
         if (get_option(\'eri_um_account_menuh_txt\') != \'\') {
             echo \'<style>.um-account-side li:hover > a, .um-account-side li:hover > a .um-account-icontip { color: \'.get_option(\'eri_um_account_menuh_txt\').\' !important; }</style>\';
         }
      }
      
      顺便说一下,我确信选项页面正在保存数据。

      有什么建议吗?

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

    不管怎样,最后一个选项实际上是可行的,但在我自己的CSS代码中,我发现我正在覆盖它。我清理了我的CSS,它正在使用我上面发布的函数。我还发现了另一种方法,使用wp_add_inline_style() 这让我更深入地研究了CSS代码。示例代码如下:

    function wpdocs_styles_method() {
        wp_enqueue_style(
            \'custom-um-style\',
            plugin_dir_path(__FILE__) . \'includes/plugins/ultimate-member/ultimate-member.css\'
        );
            $color = get_option(\'eri_um_account_menu_bg\'); //E.g. #FF0000
            $custom_css = "
                    .um-account-side li {
                            background: {$color} !important;
                    }";
            wp_add_inline_style( \'custom-um-style\', $custom_css );
    }
    add_action( \'wp_enqueue_scripts\', \'wpdocs_styles_method\' );