2017-10-30 10 views
0

私はWordpressサイト内のどのポストにも割り当てられているカテゴリを表示し、それぞれのカテゴリを独自の背景色でスタイル付けしようとしています。リストスラッグでポストとスタイルのカテゴリ

私は以下のコードを試しました。これは、投稿のカテゴリの一覧を表示しますが、リストを複製し、各カテゴリにはなく各リストに追加します。私は重複が2つのforeachループに起因すると確信していますが、私は他のものを持っていなければエラーなしで動作することができません。私が終わる何

<?php $terms = get_the_terms($post->ID , 'category'); 
     if($terms) { 
      foreach($terms as $term) { 
       $categories = get_the_category(); 
       $separator = ' '; 
       $output = ''; 
        foreach($categories as $category) { 
         $cat_obj = get_term($term->term_id, 'category'); 
         $cat_slug = $cat_obj->slug; 
         $output .= '<a href="' . esc_url(get_category_link($category->term_id)) . '" class="post-category-' . esc_attr($cat_slug) . '" alt="' . esc_attr(sprintf(__('View all posts in %s', 'textdomain'), $category->name)) . '">' . esc_html($category->name) . '</a>' . $separator; 
        } 

      echo trim($output, $separator); 
      } 
     } 
    ?> 

は、最初のカテゴリクラスとしてスラグとクラスとして第2カテゴリースラッグを有する第二のリストを持つリストである:

<a href="http:site.ca/category/archive-posts/" class="post-category-archive-posts" alt="View all posts in Archive Posts">Archive Posts</a> 
<a href="http://site.ca/category/making-decisions/" class="post-category-archive-posts" alt="View all posts in Decision Making">Decision Making</a> 
<a href="http://site.ca/category/archive-posts/" class="post-category-making-decisions" alt="View all posts in Archive Posts">Archive Posts</a> 
<a href="http:site.ca/category/making-decisions/" class="post-category-making-decisions" alt="View all posts in Decision Making">Decision Making</a> 

解決する方法とすべてのヘルプ重複は認められるでしょう。

答えて

0

別の機能を使用して利用可能なカテゴリをループする場合は、カテゴリ用語を調べる必要はありません。スラグオブジェクトのプロパティは、すべての必要な情報がすでにget_the_category()によって提供されget_the_category()すぎ

<?php $categories = get_the_category(); 
     if(!empty($categories)) { 
       $separator = ' '; 
       $output = ''; 
        foreach($categories as $category) { 
         $cat_obj = get_term($term->term_id, 'category'); 
         // $cat_slug = $cat_obj->slug; 
         $output .= '<a href="' . esc_url(get_category_link($category->term_id)) . '" class="post-category-' . esc_attr($category->slug) . '" alt="' . esc_attr(sprintf(__('View all posts in %s', 'textdomain'), $category->name)) . '">' . esc_html($category->name) . '</a>' . $separator; 
        } 

      echo trim($output, $separator); 
     } 
    ?> 
0

の戻りオブジェクトのために存在します。余分なループやデータベースのクエリは必要ありません。

<?php 
    $the_cats = get_the_category(); 
    if($the_cats)){ 
    $links = array(); 
    foreach($the_cats as $the_cat) { 
     $links[] = '<a href="' . esc_url(get_category_link($the_cat->term_id)) . '" class="post-category-' . esc_attr($the_cat->slug) . '" alt="' . esc_attr(sprintf(__('View all posts in %s', 'textdomain'), $the_cat->name)) . '">' . esc_html($the_cat->name) . '</a>'; 
    } 
    echo implode(' ', $links); 
    } 
?> 
関連する問題