質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

2683閲覧

【WordPress】コメント欄の振り分けがうまくいかない

ShogoChicago

総合スコア38

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

1クリップ

投稿2016/06/09 04:38

編集2016/06/09 09:42

WordPressで口コミサイトの運用をしています。
「service」というカテゴリーに属する投稿にはユーザーが自由にコメントできるようにしています。

##現在の問題
現在、どのページもコメント欄が同じになってしまうという不具合が起こっています。
本来なら、serviceというカテゴリーの違う投稿ごとに別のコメントが表示されるはずですが、今はなぜかserviceのカテゴリーへのコメントすべてが、どの投稿でも表示されてしまっています。
管理画面では、それぞれの投稿ごとにコメントがされていることが確認できますが、出力する際にすべて一緒に表示されてしまっているようです。

##解決したいこと
投稿ごとにコメントがしっかり振り分けられるようにしたいと思っています。

解決策が思い浮かぶ方は、どんなアドバイスでも構いませんので力を貸していただきたいです。

PHP

1【funtions.php】 2<?php 3//概要(抜粋)の文字数 4function my_length($length) { 5 return 50; 6} 7add_filter('excerpt_mblength','my_length'); 8 9//概要(抜粋)の省略記号 10function my_more($more) { 11 return '…'; 12} 13add_filter('excerpt_more', 'my_more'); 14 15 16//コンテンツの最大幅 17if ( !isset( $content_width ) ) { 18 $content_width = 747; 19} 20 21 22 23//YouTubeのビデオ:<div>でマークアップ 24function ytwrapper($return, $data, $url) { 25 if ($data->provider_name == 'YouTube') { 26 return '<div class="ytvideo">'.$return.'</div>'; 27 } else { 28 return $return; 29 } 30} 31add_filter('oembed_dataparse','ytwrapper',10,3); 32 33 34 35//YouTubeのビデオ:キャッシュをクリア 36//function clear_ytwrapper($post_id) { 37// global $wp_embed; 38// $wp_embed->delete_oembed_caches($post_id); 39//} 40//add_action('pre_post_update', 'clear_ytwrapper'); 41 42 43 44//アイキャッチ画像 45add_theme_support( 'post-thumbnails' ); 46 47 48 49//編集画面の設定 50function editor_setting($init) { 51 $init['block_formats'] = 'Paragraph=p;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre'; 52 53 $style_formats = array( 54 array( 55 'title' => '補足情報', 56 'block' => 'div', 57 'classes' => 'point' 58 ), 59 array( 60 'title' => '注意書き', 61 'block' => 'div', 62 'classes' => 'attention' 63 ) 64 ); 65 66 $init['style_formats'] = json_encode( $style_formats ); 67 68 69 return $init; 70} 71add_filter('tiny_mce_before_init', 'editor_setting'); 72 73 74 75//スタイルメニューを有効化 76function add_stylemenu( $buttons ){ 77 array_splice( $buttons, 1, 0, 'styleselect' ); 78 return $buttons; 79} 80add_filter( 'mce_buttons_2', 'add_stylemenu' ); 81 82 83 84// エディタスタイルシート 85add_editor_style(); 86add_editor_style( '//maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css' ); 87 88 89 90// サムネイル画像 91function mythumb( $size ) { 92 93 if( has_post_thumbnail() ) { 94 $postthumb = wp_get_attachment_image_src( get_post_thumbnail_id(), $size ); 95 $url = $postthumb[0]; 96 } else { 97 $url = get_template_directory_uri() . '/mainimage.jpg'; 98 } 99 100 return $url; 101 102} 103 104 105 106 107// トグルボタン 108function navbtn_scripts() { 109 110 wp_enqueue_script( 'navbtn-script', get_template_directory_uri() .'/navbtn.js', array('jquery') ); 111} 112add_action( 'wp_enqueue_scripts', 'navbtn_scripts' ); 113 114 115 116// ウィジェットエリア 117register_sidebar( array( 118 'id' => 'submenu', 119 'name' => ' サブメニュー', 120 'description' => 'サイドバーに表示するウィジェットを指定。', 121 'before_widget' => '<aside id="%1$s" class="mymenu widget %2$s">', 122 'after_widget' => '</aside>', 123 'before_title' => '<h2 class="widgettitle">', 124 'after_title' => '</h2>' 125) ); 126 127register_sidebar( array( 128 'id' => 'ad', 129 'name' => '広告', 130 'description' => 'サイドバーに表示する広告を指定。', 131 'before_widget' => '<aside id="%1$s" class="myad mymenu widget %2$s">', 132 'after_widget' => '</aside>', 133 'before_title' => '<h2 class="widgettitle">', 134 'after_title' => '</h2>' 135) ); 136 137register_sidebars( 2, array( 138 'name' => __( 'Side Widget %d' ), 139 'id' => 'side-widget', 140 'before_widget' => '<li class="widget-container">', 141 'after_widget' => '</li>', 142 'before_title' => '<h3>', 143 'after_title' => '</h3>', 144) ); 145 146 147// 検索フォーム 148add_theme_support( 'html5', array('search-form') ); 149 150//「コメントを急いで投稿しすぎているようです。」の解除 151remove_filter('comment_flood_filter', 'wp_throttle_comment_flood', 10, 3); 152 153 154//srcset削除 155add_filter( 'wp_calculate_image_srcset_meta', '__return_null' ); 156 157 158//画像挿入時の添付ファイルのページの選択肢を消す 159function media_script_buffer_start() { 160 ob_start(); 161} 162add_action( 'post-upload-ui', 'media_script_buffer_start' ); 163 164function media_script_buffer_get() { 165 $scripts = ob_get_clean(); 166 $scripts = preg_replace( '#<option value="post">.*?</option>#s', '', $scripts ); 167 echo $scripts; 168} 169add_action( 'print_media_templates', 'media_script_buffer_get' ); 170 171//attachment_id=ページに404を返す 172add_action( 'template_redirect', 'gs_attachment_template_redirect' ); 173function gs_attachment_template_redirect() { 174 if ( is_attachment() ) { // 添付ファイルの個別ページなら 175 global $wp_query; 176 $wp_query->set_404(); 177 status_header(404); 178 } 179} 180 181//hetnryを削除する 182function remove_hentry( $classes ) { 183 $classes = array_diff($classes, array('hentry')); 184 return $classes; 185} 186 187add_filter('post_class', 'remove_hentry'); 188 189 190//固定ページにカテゴリーを出す 191add_action('init','add_categories_for_pages'); 192function add_categories_for_pages(){ 193 register_taxonomy_for_object_type('category', 'page'); 194} 195add_action( 'pre_get_posts', 'nobita_merge_page_categories_at_category_archive' ); 196function nobita_merge_page_categories_at_category_archive( $query ) { 197 198if ( $query->is_category== true && $query->is_main_query() ) { 199$query->set('post_type', array( 'post', 'page', 'nav_menu_item')); 200} 201}

PHP

1【comments.php】 2<div id="comment_area"> 3 <div class="comment_post"> 4 5 <?php $args = array( 6 'title_reply' => '口コミを投稿する', 7 'label_submit' => '口コミを送信する', 8 'fields' => array( 9 'author' => '<p class="comment-form-author">' . 10 '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' placeholder="*お名前" /></p>', 11 ), 12 'comment_field' => '<p class="comment-form-comment">' . '<textarea id="comment" name="comment" cols="50" rows="6" aria-required="true"' . $aria_req . ' placeholder="*口コミの内容" /></textarea></p>', 13 ); 14 comment_form( $args ); ?> 15 </div> 16 <div class="posted_comments"> 17 <?php if(have_comments()): ?> 18 <h3 id="comments">投稿された口コミ</h3> 19 <div class="comments-list"> 20<?php $comments_per_page = 10; 21 $comments = get_comments( array( 'status' => 'approve' ) ); 22 ?> 23 <?php wp_list_comments( array ( 24 'per_page' => $comments_per_page, 25 'reverse_top_level' => false 26 ), $comments ); ?> 27 28 29 30 </div> 31 <?php endif; ?> 32 </div> 33</div> 34 35 36<?php if(get_comment_pages_count() > 1) : ?> 37 <div> 38 <?php previous_comments_link('前のコメント'); ?> 39 <?php next_comments_link('次のコメント'); ?> 40 </div> 41<?php endif; ?> 42

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2016/06/09 06:14

具体的に出力部分のコードを質問文に追記いただいたほうが回答を得られやすいと思います。
ShogoChicago

2016/06/09 09:42

すみません。問題がある可能性のあるファイルを追記いたしました。
guest

回答1

0

ベストアンサー

一度これを試してみてください。

PHP

1$comments = get_comments( array( 2 'status' => 'approve' 3 , 'post_id' => $post->ID // この値がきちんと投稿ページのものか確認する必要はあります 4 ) );

投稿2016/06/09 10:18

kei344

総合スコア69400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問