【问题标题】:Getting Wordpress single post primary category获取 Wordpress 单个帖子的主要类别
【发布时间】:2017-08-15 12:54:34
【问题描述】:

当单个帖子有多个类别时,我想只显示其主要类别。目前使用此代码:

<?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>

目前找不到太多关于此的文档。有什么改进的建议吗?

【问题讨论】:

  • 您是否使用 yoast 来设置您的主要类别?

标签: php wordpress


【解决方案1】:

请注意,这只有在您使用 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>';
    }
}

}
?>

【讨论】:

  • 非常感谢。太奇怪了,Wordpress 还没有这个功能!!!
  • Np - 我同意,或者至少 Yoast 应该为此提供一个功能:)
猜你喜欢
  • 2011-05-16
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
  • 2014-11-18
  • 2020-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多