2017-08-15 60 views
0

我想只顯示單個職位的主要類別,當它有多個類別。目前使用此代碼:獲取Wordpress單一職位主要類別

<?php 
    $perma_cat = get_post_meta($post->ID , '_category_permalink', true); 
    if ($perma_cat != null) { 
    $cat_id = $perma_cat['category']; 
    $category = get_category($cat_id); 
    } else { 
    $categories = get_the_category(); 
    $category = $categories[0]; 
    } 
    $category_link = get_category_link($category); 
    $category_name = $category->name; 
?>  

    <a href="<?php echo $category_link ?>"><?php echo $category_name ?></a> <span class="ion-ios-arrow-right"></span></li> 

目前沒有找到關於此的文檔。任何建議如何改善?

+0

您使用yoast來設置您的主要類別嗎? – Stender

回答

2

請注意,如果你使用Yoast來實現「主」類 - 但我相信這就是你正在做的 - 所以這個代碼塊(由Jawinn在github上編寫)應該可以工作:

<?php 
// SHOW YOAST PRIMARY CATEGORY, OR FIRST CATEGORY 
$category = get_the_category(); 
$useCatLink = true; 
// If post has a category assigned. 
if ($category){ 
    $category_display = ''; 
    $category_link = ''; 
    if (class_exists('WPSEO_Primary_Term')){ 
    // Show the post's 'Primary' category, if this Yoast feature is available, & one is set 
    $wpseo_primary_term = new WPSEO_Primary_Term('category', get_the_id()); 
    $wpseo_primary_term = $wpseo_primary_term->get_primary_term(); 
    $term = get_term($wpseo_primary_term); 
    if (is_wp_error($term)) { 
     // Default to first category (not Yoast) if an error is returned 
     $category_display = $category[0]->name; 
     $category_link = get_category_link($category[0]->term_id); 
    } else { 
     // Yoast Primary category 
     $category_display = $term->name; 
     $category_link = get_category_link($term->term_id); 
    } 
} 
else { 
    // Default, display the first category in WP's list of assigned categories 
    $category_display = $category[0]->name; 
    $category_link = get_category_link($category[0]->term_id); 
} 
// Display category 
if (!empty($category_display)){ 
    if ($useCatLink == true && !empty($category_link)){ 
     echo '<span class="post-category">'; 
     echo '<a href="'.$category_link.'">'.htmlspecialchars($category_display).'</a>'; 
     echo '</span>'; 
    } else { 
     echo '<span class="post-category">'.htmlspecialchars($category_display).'</span>'; 
    } 
} 

} 
?> 
+0

非常感謝。這太奇怪了,Wordpress沒有這個功能! –

+0

Np - 我同意,或者至少Yoast應該爲此提供一個函數:) – Stender

相關問題