2016-03-04 42 views
0

我對PHP和WordPress有點新,我正在嘗試基於用戶所在頁面的樣式來設置菜單插件(它們的支持很繁忙)。

我想要的是背景和其他風格改變,如果它不在首頁。在WordPress中使用PHP更改CSS樣式

我已經在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. 是否迴音的工作,我目前正在寫它假定它是在一個stylesheet.php而不是stylesheet.css中的方式嗎?
  2. 如果我要在我的所有頁面上引用額外的stylesheet.php,並將其放在那裏而不是重寫我的URL,該怎麼辦?有沒有辦法確保它會覆蓋其他樣式表?
  3. 我可以擁有多個.htaccess文件
    (例如/可溼性粉劑內容/插件/ HMENU/_frontend_files/_menu_5/_css)
    所以我沒有用長RewriteBase頭痛打擾?
  4. 我是正確的,我不能只是將這個代碼+ CSS插入到我的WordPress主題的header.php或functions.php?
  5. 我是否需要('/ wp-load.php');或者如果我想使用is_front_page(),則在我的.php樣式表中加載一些WordPress函數(不知道除了wp-load以外)。

回答

1

如果您需要根據您是否在首頁上設置菜單的樣式。然後,您可以根據您需要更改的內容簡單地使用CSS選擇器。

目標主頁菜單風格:

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

在頁面上

目標菜單:

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

你可以找到更多的場景和自己的班級在這裏:https://codex.wordpress.org/Function_Reference/body_class

+0

是。針對標準的WordPress主體類絕對是這個方法。 –

+0

因此,根據我的理解,如果我將某種樣式應用於歸檔的菜單,它會是'body.archive#menu_load_5 .hmenu_main_holder {background-color:#67b7e1; }' – EndingLegacy

+0

@EndingLegacy正確。你可以從上面提供的鏈接中看到,你可以使用許多不同的主體類來定位特定的元素。 – fostertime

0

嘗試這段代碼。

echo "<style> 
#hmenu_load_5 .hmenu_main_holder 
{ 
background-color: #67b7e1; 
} 
</style>";