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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

Q&A

解決済

2回答

2785閲覧

Wordpress コメントのソート

NextVideo

総合スコア8

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

0グッド

0クリップ

投稿2017/11/23 10:20

###前提・実現したいこと
PHP初心者ですがご教授のほうよろしくお願いします。
コメントのページ送り機能で1ページ目からを最新の投稿にする。

###発生している問題・エラーメッセージ
Wordpressの設定標準のソートでは実装できなかったです。
1ページがどうしても古いコメント順になってしまいます。

###該当のソースコード
function.php↓

//無記名のコメント投稿者名を変更する function rename_anonymous() { global $comment; if( empty( $comment->comment_author ) ) { if( !empty( $comment->user_id ) ) { $user = get_userdata( $comment->user_id ); $author = $user->user_login; } else { $author = '名無しさん'; } } else { $author = $comment->comment_author; } return $author; } add_filter( 'get_comment_author', 'rename_anonymous' ); //コメントリスト表示用カスタマイズコード function mytheme_comment($comment, $args, $depth) { $GLOBALS['comment'] = $comment; ?> <li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>"> <div id="comment-<?php comment_ID(); ?>"> <div class="comment-listCon"> <div class="comment-info flex"> <?php //echo get_avatar( $comment, 48 );//アバター画像は必要ないので削除 ?> <?php printf(__('名前:<cite class="fn comment-author">%s<span class="admin"></span></a></cite> :'), get_comment_author_link()); ?><?php printf(__('%1$s at %2$s'), get_comment_date('Y/m/d(D)'), get_comment_time('H:i:s')) ?> ID : <?php //IDっぽい文字列の表示(あくまでIDっぽいものです。) $ip01 = get_comment_author_IP(); //書き込んだユーザーのIPアドレスを取得 $ip02 = get_comment_date(jn); //今日の日付 $ip03 = ip2long($ip01); //IPアドレスの数値化 $ip04 = ($ip02) * ($ip03); //ip02とip03を掛け合わせる echo mb_substr(base64_encode($ip04), 2, 9); //base64でエンコード、頭から9文字まで出力 ?> </div> <?php if ($comment->comment_approved == '0') : ?> <em><?php _e('Your comment is awaiting moderation.') ?></em> <?php endif; ?> <?php comment_text(); ?> </div> </div> <?php }

comments.php↓

<?php dynamic_sidebar('sidebar4'); ?> <div id="comments"> <?php if(have_comments()): ?> <h3 id="resp" style="margin-bottom: 20px;">『<?php the_title(); ?>』へのコメント</h3> <ul class="comments-list"> <?php wp_list_comments('callback=mytheme_comment'); ?> </ul> <?php endif;?> <div class="comments-form"> <?php $args=array('title_reply' => '', 'lavel_submit' => ('Submit Comment'), ); if(get_comment_pages_count() > 1){ echo '<div style="margin-top:15px; text-align:center;">'; //ページナビゲーションの表示 paginate_comments_links(); echo '</div>'; } comment_form($args); ?> </div> </div>

###試したこと
Wordpress設定標準以外試していないです。
調べてみると投稿記事のソート順のコードはありましたがうまく反映されませんでした。
よろしくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

'reverse_top_level' を指定してみてはいかがでしょう。

【WordPress でコメントを新着順にソートする方法】
http://www.imaginationdesign.jp/blog/wordpress/3429/

【テンプレートタグ/wp list comments - WordPress Codex 日本語版】
https://wpdocs.osdn.jp/テンプレートタグ/wp_list_comments

投稿2017/11/23 11:45

kei344

総合スコア69407

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

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

NextVideo

2017/11/23 12:05

回答ありがとうございました。 やりたかったことができましたが、<?php wp_list_comments('callback=mytheme_comment'); ?>のコードでカスタムしてしまってるのでレイアウト崩れが発生してしまいます。 どのような記述でarrayを使えばいいのでしょうか?
kei344

2017/11/23 12:07

どう記述しているのでしょうか。
NextVideo

2017/11/23 12:09

コードを貼り忘れてました。 <?php wp_list_comments(array( 'reverse_top_level' => true, 'callback' =>mytheme_comment, 'style' => 'ol', 'avatar_size'=> 34 )); ?> このような感じにしましたが、なぜか「true,」の部分がテキストとして表示されてしまっています。
kei344

2017/11/23 12:17

その部分だけ見ればコードに問題はないと思います。 > なぜか「true,」の部分がテキストとして表示されてしまっています。 そこ以前の部分でコードに問題があると思います。 デバッグモードでエラーを確認してみてはいかがでしょう。 ⇒ http://mignonstyle.com/debug-mode/
NextVideo

2017/11/23 12:20

本当に申し訳ございません。確認してみましたところその通りでした。 3時間くらい試行錯誤しましたができなく、ご教授してもらい実装できたので本当にとてもありがとうございました。
guest

0

引数を使うことによって解決することができました。
「'reverse_top_level'」で指定を行う。

間違い投稿をしてしまいまた。

投稿2017/11/23 12:23

編集2017/11/23 12:24
NextVideo

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問