function.php
1function get_cat_all(){ 2 global $post; 3 $cat_info = get_the_category($post->ID); 4 $i = 0; 5 $count = count($cat_info); 6 while($i < $count) { 7 $cat = $cat_info[$i]; 8 $cat_name = $cat->cat_name; 9 $cat_parent = $cat->parent; 10 $cat_id = $cat->cat_ID; 11 if($cat_parent == 0) { 12 echo $cat_name; 13 $i++; 14 } else { 15 $ancestor = get_ancestors($cat_id, 'category'); 16 $ancestor = array_pop($ancestor); 17 echo $ancestor; 18 // echo get_cat_name($ancestor); 19 $i++; 20 if($i < $count) { 21 echo ', '; 22 } 23 } 24 } 25 } 26}
上記コードでsingle.phpの一番上のカテゴリーIDを表示しています。
これで出力されるカテゴリーIDをsingle.php内でif文の条件としてセットしたいのですがうまくいきません。
どのようにすればよいでしょうか?
最終的に出力したいイメージ
php
1<?php if(is_category(array(101, 102, 105)): ?>
やったこと(echoでHTMLに直接表示されてしまいました)
<?php if(get_cat_all(array(get_cat_all()))): ?>
改良版
global $post; $cat_info = get_the_category($post->ID); $i = 0; $count = count($cat_info); $categories = []; while($i < $count) { $cat = $cat_info[$i]; $cat_name = $cat->cat_name; $cat_parent = $cat->parent; $cat_id = $cat->cat_ID; if($cat_parent == 0) { echo $cat_name; $i++; } else { $ancestor = get_ancestors($cat_id, 'category'); $ancestor = array_pop($ancestor); $categories[] = $ancestor; $i++; } //ループ終了後に return $categories; }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/12/26 02:40
退会済みユーザー
2019/12/26 02:42
2019/12/26 02:52 編集
退会済みユーザー
2019/12/26 03:40
2019/12/26 03:43
退会済みユーザー
2019/12/26 04:15