回答編集履歴

3

修正

2019/01/22 01:41

投稿

CHERRY
CHERRY

スコア25171

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- functions.php 下記のような `list_cats`フックを利用してフック内で表示するか判定すれば、特定の投稿タイプで使用されているカテゴリーだけの「カテゴリーリスト」を出力できると思います。
5
+ functions.php で、下記のような `list_cats`フックを利用してフック内で表示するか条件判定すれば、特定の投稿タイプで使用されているカテゴリーだけの「カテゴリーリスト」を出力できると思います。
6
6
 
7
7
 
8
8
 
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- is_archive() や is_category() 等の [条件分岐タグ](https://wpdocs.osdn.jp/%E6%9D%A1%E4%BB%B6%E5%88%86%E5%B2%90%E3%82%BF%E3%82%B0) を利用して、適用されるテンプレートファイルを絞った方が良いかもしれません...
13
+ 管理画面とメインループは、除外していますが、is_archive() や is_category() 等の [条件分岐タグ](https://wpdocs.osdn.jp/%E6%9D%A1%E4%BB%B6%E5%88%86%E5%B2%90%E3%82%BF%E3%82%B0) を利用して、適用されるテンプレートファイルを絞った方が良いかもしれません
14
14
 
15
15
 
16
16
 

2

追記・修正

2019/01/22 01:41

投稿

CHERRY
CHERRY

スコア25171

test CHANGED
@@ -1,31 +1,61 @@
1
- [テプレータグ/wp_list_categories](https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/wp_list_categories)
1
+ WordPress のドキュメントを読んだ感じでは、 [list_cats](https://developer.wordpress.org/reference/hooks/list_cats/) フィルターフックが利用できそうです。
2
2
 
3
3
 
4
4
 
5
- 「カテゴリーの指定・除外」という項目があります。
5
+ functions.php に下記のような `list_cats`フックを利用して、フック内で表示するか判定すれば、特定の投稿タイプで使用されているカテゴリーだけの「カテゴリーリストを出力できるいます。
6
6
 
7
7
 
8
8
 
9
- > 次の例は、カテゴリー名順にソート、各カテゴリーの投稿数を表示、リストから ID が 10 のカテゴリー除外:
9
+ post_type は、表示したい投稿タイプの slug指定してください。
10
-
11
- > <ul>
12
-
13
- > <?php wp_list_categories('orderby=name&show_count=1&exclude=10'); ?>
14
-
15
- > </ul>
16
10
 
17
11
 
18
12
 
19
- と書かれていて、「リストから ID 10 のカテゴリーを除外」の部は `exclude=10` になりす。
13
+ is_archive() is_category() 等の [条件岐タグ](https://wpdocs.osdn.jp/%E6%9D%A1%E4%BB%B6%E5%88%86%E5%B2%90%E3%82%BF%E3%82%B0) を利用して、適用されるテンプレートファイルを絞った方が良いかもしれせん...
20
14
 
21
15
 
22
16
 
17
+ ```PHP
18
+
19
+ add_filter( 'list_cats', 'my_list_cats_tt169940', 10, 2 );
20
+
21
+ function my_list_cats_tt169940( $cat_name, $cats ){
22
+
23
+ if ( is_admin() || is_main_query() || is_home() ) {
24
+
23
- 質問に記載されているコード
25
+ return $cat_name;
26
+
27
+ }
24
28
 
25
29
 
26
30
 
31
+ $args = array(
32
+
33
+ 'posts_per_page' => 1,
34
+
27
- > <?php wp_list_categories('title_li=&show_count=1'); ?>
35
+ 'post_type' => array( '投稿A-slug', '投稿B-slug' ),
36
+
37
+ 'category' => $cats->cat_ID,
38
+
39
+ );
40
+
41
+ $my_posts = get_posts( $args );
28
42
 
29
43
 
30
44
 
31
- に 上記を(ご自身のカテゴリーIDに合わせて)追加したらどうでしょうか?
45
+ if( !empty($my_posts) ){
46
+
47
+ return $cat_name;
48
+
49
+ } else {
50
+
51
+ return;
52
+
53
+ }
54
+
55
+ }
56
+
57
+ ```
58
+
59
+
60
+
61
+ テスト環境で動かしてみた感じでは、特に問題なさそうですが、何か副作用が出る可能性はあるので、十分に確認してから利用してください。

1

修正

2019/01/22 01:39

投稿

CHERRY
CHERRY

スコア25171

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
 
18
18
 
19
- と書かれていて、`exclude=10` がカテゴリーを除外する該当します。
19
+ と書かれていて、「リストから ID が 10 のカテゴリーを除外」の部分は `exclude=10` になります。
20
20
 
21
21
 
22
22
 
@@ -28,4 +28,4 @@
28
28
 
29
29
 
30
30
 
31
- に 上記を追加したらどうでしょうか?
31
+ に 上記を(ご自身のカテゴリーIDに合わせて)追加したらどうでしょうか?