在WordPress中使用PHP更改CSS样式

结束遗产

我是PHP和WordPress的新手,我正在尝试根据用户所在的页面来设置菜单插件的样式(他们的支持很忙)。

我要的是背景和其他样式的更改(如果不在首页上)。

我已经在inspect元素中测试了CSS,所以选择器是正确的,但是我真的不知道如何以一种干净有效的方式来实现它。

麻烦的方法是创建另外两个菜单(因为top_navigation和main_menu是分开的,所以总共4个),在其插件设置中设置样式,并在不使用php的首页上将首页上的两个菜单替换为另外两个菜单。因此,如果我需要更改菜单项,则必须执行两次或四次,这对我来说是愚蠢的。


到目前为止,我已经想出了创建样式表的PHP变体,并重写URL以从.css重定向到.php的方法,但是我对如何从根目录的.htaccess中做到这一点并没有真正的把握。因为两个样式表的位置离它很远。

样式表的位置:样式表的/wp-content/plugins/hmenu/_frontend_files/_menu_5/_css
名称:hero_menu_styles.csshero_menu_styles.php
PHP样式表:

<?php 
header('Content-type: text/css; charset: UTF-8'); 
?>

/*  Normal CSS Here */

<?php 
if(!is_front_page())
{
echo "#hmenu_load_5 .hmenu_main_holder {background-color: #67b7e1;}"
}
?>

.htaccess:
我几乎100%确信这有什么问题。
我也不知道该怎么办。

# BEGIN WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase "/wp-content/plugins/hmenu/_frontend_files/_menu_5/_css/"
RewriteRule ^hero\_menu\_styles\.css$ hero\_menu\_styles\.php [L]
</IfModule>

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

所以我有很多问题。

  1. 假设echo在stylesheet.php中而不是在stylesheet.css中,echo是否可以按照我当前编写的方式工作?
  2. 如果我要在所有页面上引用一个额外的stylesheet.php并将其放在其中而不是重写我的URL怎么办?有没有办法确保它会覆盖其他样式表?
  3. 我是否可以有多个.htaccess文件
    (例如,在/ wp-content / plugins / hmenu / _frontend_files / _menu_5 / _css中),
    所以我不必为长时间的RewriteBase烦恼而烦恼?
  4. 我是否正确,因为我不能只是将此代码+ css粘贴到我的WordPress主题的header.php或functions.php中?
  5. 我是否需要require('/ wp-load.php'); 还是要在我的.php样式表中加载一些WordPress函数(除了wp-load之外,什么都不知道),如果我想使用is_front_page()?
寄养时间

如果仅根据您是否在主页上来设置菜单样式。然后,您可以简单地根据需要更改使用CSS选择器。

目标主页菜单样式:

body.home .menu-class {background: #333;}

页面上的目标菜单:

body.page .menu-class {background: #FFF;}

您可以在此处找到更多方案及其类:https : //codex.wordpress.org/Function_Reference/body_class

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章