2015-05-28 47 views
4

我有一個使用圖像替換類別文本的Wordpress網站。它被設置爲有一個後div(padding:20%0;對於一致的響應高度)然後有一個div定位絕對,vert/horiz居中在這個div之上。創建多個Wordpress類別div

HTML

<div class="indx-img" style="background-image:url('...');"> 

     <?php 
     $testStyle = ""; 

     if(has_category('update') || has_category('uncategorized')) { 
      $testStyle = "style=\"background-image:url('".get_bloginfo('template_directory')."/img/logo.png')\""; 
     } elseif(has_category('event')) { 
      $testStyle = "style=\"background-image:url('".get_bloginfo('template_directory')."/img/logo.png')\""; 
     } 
     ?> 

      <div class="test" <?php echo $testStyle; ?>></div> 

</div> 

CSS

.indx-img { 
    position: relative; 
    padding: 20% 0; 
} 

.test { 
    position: absolute; 
    left: 50%; 
    margin-left: -5em; 
    transform: translateY(-50%); 
    -webkit-transform: translateY(-50%); 
    -ms-transform: translateY(-50%); 
    height: 10em; 
    width: 10em; 
} 

這讓是爲測試的背景圖像。與此相關的問題是,如果帖子上有多個類別,則只會顯示一個類別。

理想情況下,我想爲'測試'中創建的每個應用於該類別圖像的文章的div創建一個div,並彼此相鄰。

+0

一個問題:爲什麼你的語句在'if'和'elseif'完全相同?如果這就是他們應該如此的話,那麼我認爲使用'if-elseif'沒有意義。一個'if'就足夠了。 –

+0

他們會改變,現在他們就是這樣,只是爲了確保它能正常工作,最終會有兩個以上的陳述,而且每一個都會有不同的圖片 – user3550879

回答

1

通過你的代碼,我猜你的HTML div代碼正在運行單個帖子。並且當您使用has_category檢查單個類別時,它將僅爲您提供類別。

要獲得任何職位的所有類別,您需要wp_get_post_categories職能。

$post_categories = wp_get_post_categories($post_id); 
$cats = array(); 

foreach($post_categories as $c){ 
    $cat = get_category($c); 
    $cats[] = array('name' => $cat->name, 'slug' => $cat->slug); 
} 

通過這種方式,你可以得到類別列表,並可以相應地應用樣式代碼。請參閱https://codex.wordpress.org/Function_Reference/wp_get_post_categorieswp_get_post_categories使用的更多詳細信息。

+0

甜美,那看起來像是正確的軌道,還有其他的有你遇到過的例子來解釋它嗎? – user3550879

+0

https://codex.wordpress.org這本身就是WordPress的社區,你可以用它的參數和使用所有的功能細節 而不是原來的每個函數的定義,你可以隨時你的代碼中使用它,按您的要求,並且因爲所有人都有不同的要求,所以你很難得到你想要的確切代碼 – Rupal