2014-02-14 55 views
0

我需要根據帖子類型和類別添加正文類。基於帖子類別的自定義body標籤

我試過這個,但它似乎沒有工作。

add_filter('body_class', 'custom_body_class'); 

function custom_body_class($classes) { 
    global $post; 

    if ('service_provider' == $post->post_type AND 'educational_services' == $post->post_category) { 
     $classes[] = 'body-purple'; 
     return $classes; 
    } 
} 

這將返回該錯誤 -

警告:連接()[function.join]:在/home/davedevj/public_html/wp-includes/post-template.php傳遞線路394的參數無效類=「」>

所以我把一些額外的代碼:

add_filter('body_class', 'custom_body_class'); 

function custom_body_class($classes) { 
    global $post; 

    if ('service_provider' == $post->post_type AND 'educational_services' == $post->post_category) { 
     $classes[] = 'body-purple'; 
     return $classes; 
    } 
    else { 
     $classes[] = ''; 
     return $classes; 
    } 
} 

如果可能的話,我需要沒有else語句做。

但主要問題是,即使這不起作用。我嘗試過在post_category部分留下,並沒有AND,只是有條件的 - 但沒有運氣。

+0

現在正在進行重寫。 –

+0

嘿是service_provider某個數組的關鍵嗎? –

+0

它的一個自定義帖子類型 – user1683285

回答

0

您的代碼失敗,因爲沒有post_category屬性。這是我的版本:

function wpse_custom_body_class($classes) { 
    // Check user is on a single service_provider post. 
    if (! is_singular('service_provider')) 
     return $classes;  

    // Get categories assigned to post. 
    $categories = get_the_category(); 

    // Check categories were found. 
    if (! $categories) 
     return $classes; 

    foreach ($categories as $category) { 
     if ('educational_services' == $category->name) { 
      $classes[] = 'body-purple'; 
     } 
    } 

    return $classes; 
} 
add_filter('body_class', 'wpse_custom_body_class'); 
+0

沒有不工作 - 任何想法如何調試?我可以輸出當前類別到瀏覽器窗口來檢查它是什麼嗎?我是一個前端的傢伙,只是讓我的腳溼與PHP和後端WP – user1683285

+0

我很抱歉聽到這不起作用,但我相信這個問題在別處。我在本地安裝中複製了您的設置,這很成功。 –

相關問題