サポート » 使い方全般 » 投稿一覧画面で表示されるコメントをカスタマイズしたい

  • 投稿一覧画面で、それぞれの記事のコメント数が表示されていると思います。
    コメント数が表示されるのは嬉しいのですが、
    コメントが表示されている数字の部分をクリックすると、
    その記事のコメントが一覧で表示されるページに飛びます。

    自分としては、投稿一覧画面に表示されるコメント数で
    別のページに飛ばないようにしたいです。

    クリックで別のページに飛ばないような、
    コメント数の表示の方法はないでしょうか?

    (その記事のページへ飛ぶのではなく、ただコメント数を表示するだけ
     という仕様にしたいです。)

    お願いします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • 方法として、

    1. コメント数のみ表示用のカラムを追加
    2. javascriptでコメント数部分の 全a タグの href 要素を削除する

    の2つが思いつきました。(私なりの方法です)

    2つとも説明するのはちょっと大変なので、1番目の「コメント数のみ表示用のカラムを追加」のみの方法を書きます。

    WordPressのバージョンは最新の3.5.1で確認しました。

    基本的には、

    • manage_posts_columns にフックして、コメント表示用のカラムを追加
    • manage_posts_custom_column にフックして、コメント数のみを表示

    となります。

    フックの詳細についてはこちらをご覧ください。
    http://codex.wordpress.org/Plugin_API/Action_Reference/manage_posts_custom_column
    http://codex.wordpress.org/Plugin_API/Filter_Reference/manage_posts_columns
    ※日本語版のドキュメントは見つけることができませんでした。

    具体的なコードですが、ただコメント数の表示のみでよければ、

    function comment_custom_column( $column, $post_id ) {
    
    	if( $column == 'comments_custom' ) {
    		echo get_comments_number( $post_id );
    	}
    
    }
    add_action( 'manage_posts_custom_column' , 'comment_custom_column', 10, 2 );
    
    function comments_custom_columns( $columns ) {
    	$columns["comments_custom"] = $columns["comments"];
    
    	return $columns;
    }
    add_filter( 'manage_posts_columns' , 'comments_custom_columns' );

    こういう感じだと思います。

    また、バルーン表示?のようなもので表示させたいなら、

    echo get_comments_number( $post_id );

    の部分を、

    echo '<div class="post-com-count-wrapper"><div class="post-com-count" style="float: left;"><span>';
    		echo get_comments_number( $post_id );
    		echo '</span></div></div>';

    こういう感じになると思います。

    あとは元のコメントカラムを削除したいなら、manage_posts_columns にてunsetするなりで対応できると思います。

    ただ、実際に動作させてみると分かりますが、post-com-coutまわりにhoverのスタイルが設定されている為、いかにもクリックできるような表示になります。

    バルーン表示的なものをしたいけど、hoverプロパティを削除したいなら、管理画面にcssを読み込むなりで、無効にするとできると思います。

    トピック投稿者 hagemaru

    (@hagemaru)

    返信が遅くなってしまいまして申し訳ありません。

    細かい質問になってしまうのですが、
    実は、gqevu6bsizさんの投稿一覧画面の表示項目のカスタマイズをする
    プラグインの使用を検討しています。

    ただ、そのプラグインを使おうとすると、
    上記のコードをコピペしても、表示されませんでした。

    私としては、投稿一覧画面で表示される項目をなるべく
    減らしたいと考えているのですが、
    どのようにするのがよいでしょうか?

    また、吹き出しの部分を「コメント」というような
    表記に変更したいと考えているのですが、
    そのようなことは出来ますでしょうか?

    重ねた質問になってしまい、申し訳ありません。

    gqevu6bsiz

    (@gqevu6bsiz)

    私としては、投稿一覧画面で表示される項目をなるべく
    減らしたいと考えているのですが、
    どのようにするのがよいでしょうか?

    コメント数の表示以外について何も記載が無いので、何とも答えられませんが、例えば
    「記事ID」「タイトル」「コメント数」「日時」
    などのように、どの項目だけを表示させたいのか示していただければより具体的な回答がしやすいので、出来れば次回からは具体的に記載をお願いします。

    下記の回答はコメント数に限ってですが、
    私のプラグインをご使用する場合

    1. 前回のコードのプライオリティ(優先度)を変更
    2. javascriptでリンク部分を制御

    の2通りとなります。

    前回のコードの優先度の変更をすると一応コメント数表示のみにはなりますが、順番の変更はできません
    ※必ず一番最後の列がコメント数となります。

    あまりいい方法とは思えないので今回は2の方法です。
    使用テーマのfunctions.phpに以下を貼り付けて下さい。

    function custom_comments_column() {
    	global $current_screen;
    
    	if( $current_screen->id == 'edit-post' ) :
    ?>
    <script type="text/javascript">
    jQuery(document).ready(function($) {
    	var $Table = $("table.wp-list-table");
    	if( 0 < $Table.size() ){
    		$("tr td.column-comments .post-com-count-wrapper a" , $Table).each(function() {
    			$(this).removeAttr("href");
    		});
    	}
    });
    </script>
    <style>
    .post-com-count {
    	cursor: default;
    }
    .post-com-count:hover{ background-position: center -80px; }
    .post-com-count:hover span {
    	cursor: default;
    	background-color: #bbb;
    }
    strong .post-com-count:hover{ background-position: center -55px; }
    strong .post-com-count:hover span {
    	cursor: default;
    	background-color: #21759b;
    }
    
    </style>
    <?php
    	endif;
    }
    add_action( 'admin_print_footer_scripts' , 'custom_comments_column' );

    ver 3.5.1で試しましたが問題なくコメント数のみの表示のようになりました。

    次に、
    私のプラグインを使わない場合
    前回のコードのmanage_post_columnsに現在設定されているカラムの配列がくるので、順番を変更するなり削除するなりは自由にできるはずです。

    function comment_custom_column( $column, $post_id ) {
    
    	if( $column == 'comments_custom' ) {
    		echo '<div class="post-com-count-wrapper"><div class="post-com-count" style="float: left;"><span>';
    		echo get_comments_number( $post_id );
    		echo '</span></div></div>';
    	}
    
    }
    add_action( 'manage_posts_custom_column' , 'comment_custom_column', 10, 2 );
    
    function comments_custom_columns( <strong>$columns</strong> ) {
    	$columns["comments_custom"] = $columns["comments"];
    
    // タイトルカラムを削除
    unset( $columns["title"] );
    
    	return $columns;
    }
    add_filter( 'manage_posts_columns' , 'comments_custom_columns' );

    $columnsから必要のないカラムをunset()なりで削除していけばいいと思います。

    また、吹き出しの部分を「コメント」というような
    表記に変更したいと考えているのですが、
    そのようなことは出来ますでしょうか?

    すみません、こちらは具体的にどこの吹き出しの部分の事なのかが分からないので、答えることができませんでした。

    トピック投稿者 hagemaru

    (@hagemaru)

    ご丁寧な回答をありがとうございます。

    非常にわがままなのですが、
    私としましては、投稿一覧画面は
    「タイトル」「カテゴリー」「日時」「コメント」以外全てを
    非表示にしたいと考えています。

    ただ、投稿一覧画面で表示される項目は、権限によって変更できることまで
    出来ると嬉しいと考えています。
    (難しいようでしたら、全ての権限で上記の4種類のみでも助かります。)

    まず、プラグインを使用しないほうのコードですが、
    コピペをしたところ、エラーが発生してしまいました。
    詳しく調べていないですが、私が使用しているプラグインなどと
    ぶつかっているのかもしれないです。

    次に、プラグインを使用するほうのコードですが、
    コピペをしたところ、プラグイン使用か未使用かに関係なく、
    クリックしてページが飛ばないようになっていました。

    ですが、プラグインを使用している場合と使用していない場合で、
    ラベル?(「タイトル」や「日時」などが表示されている部分
    という説明で大丈夫でしょうか・・・)の部分に変化がありました。

    プラグインを使用している場合は、ラベルの部分が「コメント」と
    なっていたのに対し、
    プラグインを使用していない場合は、ラベルの部分が吹き出しの絵に
    なっていました。

    そして、私の質問の終わりのほうにあった、
    ・吹き出しの部分を「コメント」という表記に変更したい
    というのは、
    プラグイン未使用の時にラベルが吹き出しになっていたので、
    このラベルを「コメント」に変更したい、ということでした。
    わかりづらくなってしまいまして、申し訳ありませんでした。

    gqevu6bsiz

    (@gqevu6bsiz)

    hagemaruさん、先に。

    プラグインを使用している場合は、ラベルの部分が「コメント」と
    なっていたのに対し、
    プラグインを使用していない場合は、ラベルの部分が吹き出しの絵に
    なっていました。

    そこだったんですね。ありがとうございます。

    まず、プラグインを使用しないほうのコードですが、
    コピペをしたところ、エラーが発生してしまいました。
    詳しく調べていないですが、私が使用しているプラグインなどと
    ぶつかっているのかもしれないです。

    これだけだと、本当にプラグインの影響なのか、私のコードが間違っていたのか判別が出来ないので、出来ればエラーの内容まで貼り付けていただけるとありがたいです。
    http://ja.forums.wordpress.org/topic/11794?replies=1

    あと、

    次に、プラグインを使用するほうのコードですが、
    コピペをしたところ、プラグイン使用か未使用かに関係なく、
    クリックしてページが飛ばないようになっていました。

    すみません、私の説明が間違っていました。
    Javascriptで制御しているだけなので、確かに私のプラグインの使用未使用には関係ないですね。

    そして、ご説明ありがとうございます。
    hagemaruさんのご希望が分かってきました。

    1. 表示するカラムは「タイトル」「カテゴリー」「日時」「コメント」
    2. コメントのカラム名ラベルは吹き出しアイコンではなく、「コメント」と表記
    3. コメントのカラムの値はコメント数のみを表示。リンクさせない
    4. 権限別に表示するカラムの変更ができるようにしたい

    まず、私のプラグインを使用した状態での4番、「権限別に表示するカラムの変更ができるようにしたい」は難しいです。
    ※あのプラグインで設定した内容は、全ての権限に適用されます。

    なので、

    (難しいようでしたら、全ての権限で上記の4種類のみでも助かります。)

    「上記の1~3番までの内容と、全ての権限で同じ表示カラム」でよろしければ、

    • プラグインを使用して表示するカラムを設定
    • 前回のjavascriptでリンク部分を制御のコードをfunctions.phpに貼り付け

    で出来ると思いますがどうでしょうか?

    どうしても権限別に表示カラムを変更したい。
    という場合は、まずmanage_posts_columnsmanage_posts_custom_columnの使い方について、色々調べてみると良いと思います。

    仕組みが分かれば、その中や外で、権限別に表示カラムを設定するなり自由にできます。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「投稿一覧画面で表示されるコメントをカスタマイズしたい」には新たに返信することはできません。