teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

うまくいったソースコードを掲載

2016/07/01 00:53

投稿

worldrun
worldrun

スコア19

title CHANGED
File without changes
body CHANGED
@@ -114,4 +114,17 @@
114
114
  カテゴリは1と3の2つしかないです。
115
115
  カテゴリページは問題なく1と3それぞれ表示されます。
116
116
  記事ページは1と3の両方が表示されます。
117
- トップページでは1だけが表示されます。
117
+ トップページでは1だけが表示されます。
118
+
119
+ どうやらうまくいったソースがこちらです
120
+ ```php
121
+ if( is_category() ) {
122
+ // カテゴリアーカイブ
123
+ $cat_id = get_category( get_query_var( 'cat' ) )->term_id;
124
+ } else if (is_single() ) {
125
+ // 投稿ページ
126
+ $cat_id = wp_get_post_categories( $wp_query->post->ID )[ 0 ];
127
+ }else{
128
+ $cat_id = 199;
129
+ }
130
+ ```

3

コメントソースを追加

2016/07/01 00:53

投稿

worldrun
worldrun

スコア19

title CHANGED
File without changes
body CHANGED
@@ -54,4 +54,64 @@
54
54
  トップページ=1(カテゴリ1の一覧が表示される)
55
55
  カテゴリページ=3(正常、ID=1のカテゴリは1)
56
56
  記事ページ=1(全てのカテゴリの記事が一覧表示される)
57
- こんな感じです
57
+ こんな感じです
58
+
59
+ コメントのコードです(sidebar.php)
60
+ ```php
61
+ <!-- カテゴリ新着コメント -->
62
+ <div class="box">
63
+
64
+ <h2 class="box-header main-color-font">コメント一覧</h2>
65
+ <?php
66
+ // html プレースホルダ―
67
+ $html = '<li><a href="%1$s">%2$s</a></li>';
68
+ //表示するコメント件数
69
+ $show_comments = 2;
70
+
71
+ if( is_category() ) {
72
+ // カテゴリアーカイブ
73
+ $page_cat = get_category( get_query_var( 'cat' ) )->term_id;
74
+ } else if (is_single() ) {
75
+ // 投稿ページ
76
+ $page_cat = wp_get_post_categories( $wp_query->post->ID )[ 0 ]->term_id;
77
+ }else{
78
+ $page_cat = 3;
79
+ }
80
+ //コメント分の長さ
81
+ $comment_length = 60;
82
+
83
+ //コメントの取得条件
84
+ $args = array(
85
+ 'status' => 'approve',
86
+ 'type' => 'comment',
87
+ 'post_status' => 'publish',
88
+ 'number' => 50, //コメント抽出件数
89
+ );
90
+ //コメント情報の取得
91
+ $comments = get_comments( $args );
92
+ $i = 0;
93
+
94
+ foreach ( $comments as $key => $comment ) {
95
+ //コメントとリンク
96
+ $id = absint( $comment->comment_post_ID );
97
+ $url = esc_url( get_permalink( $id ) );
98
+ $comment = wp_html_excerpt( $comment->comment_content, $comment_length, '...' );
99
+
100
+ if ( has_category( $page_cat, $id ) ) {
101
+ // 表示
102
+ printf( $html, $url, $comment );
103
+ $i++;
104
+ }
105
+ //表示するコメント件数に達したら、ループを抜ける
106
+ if ( $i >= $show_comments ) {
107
+ break;
108
+ }
109
+ }
110
+ ?>
111
+ </div>
112
+ ```
113
+
114
+ カテゴリは1と3の2つしかないです。
115
+ カテゴリページは問題なく1と3それぞれ表示されます。
116
+ 記事ページは1と3の両方が表示されます。
117
+ トップページでは1だけが表示されます。

2

試しているコードを追記

2016/06/30 12:17

投稿

worldrun
worldrun

スコア19

title CHANGED
File without changes
body CHANGED
@@ -40,4 +40,18 @@
40
40
  この3種です。どれも記事ページで正しい結果を返してくれませんでした。
41
41
  ちなみにsidebar.phpに記述しています。
42
42
 
43
- よろしくお願いいたします。
43
+ よろしくお願いいたします。
44
+
45
+ 追記:今試しているコードです
46
+ ```php
47
+ $cat = get_the_category();
48
+ $cat = $cat[0];
49
+ $chekname= $cat->cat_name;
50
+ $chekid = $cat->cat_ID;
51
+ echo ' chekname='.$chekname; echo ' chekid='.$chekid;
52
+ ```
53
+ 結果は
54
+ トップページ=1(カテゴリ1の一覧が表示される)
55
+ カテゴリページ=3(正常、ID=1のカテゴリは1)
56
+ 記事ページ=1(全てのカテゴリの記事が一覧表示される)
57
+ こんな感じです

1

進行状況を報告

2016/06/30 10:25

投稿

worldrun
worldrun

スコア19

title CHANGED
File without changes
body CHANGED
@@ -22,4 +22,22 @@
22
22
 
23
23
  もし直接カテゴリを参照することが無理なのであれば、カテゴリIDから記事のIDを用意して、その記事のIDからコメントの配列を作るのかなと思ったのですが、それをどうすれば良いかもイメージが沸きませんでした。
24
24
 
25
+ ※色々やっていたのですが、現在のカテゴリIDの取得も困難な状態です。
26
+ カテゴリページ→取得出来ました。
27
+ トップページ→1がかえってきます。
28
+ 記事ページ→0しかかえってきません。
29
+
30
+ 使ったコードは
31
+ ```php
32
+ $cat = get_query_var('cat');
33
+ $posts = get_posts("order=asc&category=$cat&numberposts=10");
34
+
35
+ $categoryname = single_cat_title('',false);
36
+ $categoryid = get_cat_ID($categoryname);
37
+
38
+ <?php $cat = get_the_category(); echo $cat[0]->name; ?>
39
+ ```
40
+ この3種です。どれも記事ページで正しい結果を返してくれませんでした。
41
+ ちなみにsidebar.phpに記述しています。
42
+
25
43
  よろしくお願いいたします。