サポート » 使い方全般 » 最新のコメント ある特定のカテゴリーを除外

  • お世話になります。
    現在私は、WordPress 3.1.1 を使用してサイトを作成しております。

    ウィジェットの「最新のコメント」についての質問です。
    現在、ウィジェットの「最新のコメント」をサイドバーに表示されているのですが、
    デフォルトだと、すべてのカテゴリーの中の新着10件を表示されてしまいます。
    ある特定のカテゴリーのコメントを除外したい場合はどうすれば良いのでしょうか?

    プラグインでなにかないか調べたところ、
    「Widget Logic」、「Display widgets」などのプラグインを見つけたので、
    試してはみたんですが、互換性の問題か、バージョンの問題かは
    分かりませんが、なぜか反映されませんでした。。。

    なにか特定のカテゴリーを除外する方法はないでしょうか?
    良いプラグインまたは、PHPでIDを除外する方法などの
    回答をよろしくお願いしますm(_ _)m

15件の返信を表示中 - 1 - 15件目 (全17件中)
  • カスタムフィールドを使用してはいかがでしょうか?
    カスタムフィールドサーチ等で絞り込めばいいのかと思います
    プラグインはそれこそ数多にあるのでどれがいいとは一概に言えませんが
    やっぱり「Custom Fields Search」でしょうか?

    トピック投稿者 rishu

    (@rishu)

    回答ありがとうございます。

    カスタムフィールドサーチ等で絞り込めばいいのかと思います

    カスタムフィールド自体使ったことがないので
    よくを理解できていないのですが、絞り込むというのはどういうことなんでしょうか?

    サイドバーに検索サーチにみたいモノを設置して
    検索できるようにするということなんでしょう?

    除外って見えたものでてっきり絞込みかと…失礼ながら改めて

    >デフォルトだと、すべてのカテゴリーの中の新着10件を表示されてしまいます。
    >ある特定のカテゴリーのコメントを除外したい場合はどうすれば良いのでしょうか?
    除外するカテゴリの指定はどうするのでしょうか?
    テキストボックスやプルダウン、ラジオボックスなど色々あるので…

    >プラグインでなにかないか調べたところ、
    >「Widget Logic」、「Display widgets」などのプラグインを見つけたので、
    プラグインなのですが
    前者は「ウィジェットを表示するページを指定する」
    後者は「ウィジェットに表示する項目を指定する」
    意味が似てるようで違うのですが「サイドバーに表示するカテゴリを指定する」
    所謂絞込みを行いたいのでしょうか?

    >なにか特定のカテゴリーを除外する方法はないでしょうか?
    >良いプラグインまたは、PHPでIDを除外する方法などの
    後者の意味で捉えるのならば何かオブジェクトを置いて
    それを元に検索のように絞込みをかけるか
    もしくは先ほど仰っていた「Display widgets」を使用して表示する項目を指定するのかと…

    解釈が間違っていたらすみません

    トピック投稿者 rishu

    (@rishu)

    前者は「ウィジェットを表示するページを指定する」
    後者は「ウィジェットに表示する項目を指定する」

    ちょっと意味が違うのですね、同じものだと思っていました。。。

    意味が似てるようで違うのですが「サイドバーに表示するカテゴリを指定する」
    所謂絞込みを行いたいのでしょうか?

    そうです!
    サイドバーに表示するカテゴリを指定したいということです。
    説明が分かりにくくてすみませんっ。

    現在状況として
    「カテゴリ1」「カテゴリ2」「カテゴリ3」「カテゴリ4」「カテゴリ5」「カテゴリ6」
    といった感じに、カテゴリが6つあります。
    「最新のコメント」欄には、「カテゴリ1」「カテゴリ2」「カテゴリ3」「カテゴリ4」の
    コメントのみを表示で、「カテゴリ5」「カテゴリ6」のコメントは表示しないように
    設定したいということです。

    説明が分かりにくかったらすみません。。。

    「Display widgets」は使ったことがないのですが…
    行いたいことを実現するにはいいのかと思います

    1.プラグインを有効化
    2.Hide on checkedを選択(指定した条件を非表示)
    3.条件を指定(非表示にしたい項目にチェック)

    もっと複雑なことをしたい場合は「Custom widgets」を使ったほうがいいみたいですが
    前者の「Display widgets」と競合するそうなのでどちらかを無効化して使ってください

    駄説ながら参考になれば幸いです

    トピック投稿者 rishu

    (@rishu)

    回答ありがとうございます。
    「Display widgets」「Display widgets」もプラグインを使用して、
    カテゴリーを指定してもどちらのプラグインもうまく表示されませんでした。。。

    他のプラグインとの互換性の問題かな…と思い
    全てのプラグインを停止して実行してみたのですが、うまく表示されませんでした。

    現在プラグインではなくsidebar.phpに直接PHPを書きこんで設定しようと
    思っているんですが、いまいちPHPが分かりません。。。

    以下のサイト様を参考にしてサイドバーに「最新のコメント」を
    表示させてみたのですが、この場合カテゴリの指定はどうすれば良いのでしょうか?
    http://www.geekzshu.com/wordpress/674

    返事が遅くなりました
    スラッグからIDを取得してコメントの引数でIDを渡して除外すればいいかと思います
    確か’-ID’で除外できたはず…上記リンクはページスラッグですので、もしかしたらコッチかもしれないです↓

    $cat = get_category_by_slug('slug_string');
    echo $cat->term_id;

    若干憶測が交じっていてすみませんorz

    追記:
    コメントの引数は参考になさってる物を元に組みますと
    $comments = get_comments(array('status' => 'approve' ,'number' => 5, 'ID' => '-$cat'));
    恐らくこうなるかと思います、未検証なのでまた御返事下さい

    トピック投稿者 rishu

    (@rishu)

    遅くなりましたが、回答ありがとうございます。
    現在では以下のようにPHPを組んでいるんでいます。

    <?php
    $comments = get_comments(array('status' => 'approve' ,'number' => 5));
    foreach($comments as $comment):
    $post = get_post($comment->comment_post_ID);
    ?>

    PHPはほとんどいらったことがないので、
    どのように修正していいのは、まったく理解していないのですが

    $comments = get_comments(array(‘status’ => ‘approve’ ,’number’ => 5, ‘ID’ => ‘-$cat’));

    というのは…どこに指定をすればよいのでしょうか?

    ごめんなさい、えっとこれはどこで記述してるんでしょうか?
    恐らくであろうコードをとりあえず

    <?php
    $comments = get_comments(array('status' => 'approve' ,'number' => 5, 'ID' =>'-$cat'));
    foreach($comments as $comment):
    $post = get_post($comment->comment_post_ID);
    ?>

    $catはカテゴリーIDがはいります
    ですのでIDは自分で取得してこないといけません

    どのカテゴリーを除外したいのか分からないのですが
    スラッグ名からもIDを取得できますし
    絞り込みをユーザーに任せたいのであれば検索フォームの様なものを作らないといけません
    逆に自分が表示したくないものだけを指定するならばコードの中で定数にしても一時的には問題ないと思います
    ですが定数は出来るだけ使わないで
    $cat = get_query_var(‘cat’);
    のようにページ情報などから取ってきたりした方が柔軟性はあるかと思います

    トピック投稿者 rishu

    (@rishu)

    回答ありがとうございます。

    $catはカテゴリーIDがはいるということは、
    IDが14の場合は、以下のようになるということでしょうか?

    <?php
    $comments = get_comments(array('status' => 'approve' ,'number' => 5, '41' =>'-$cat'));
    foreach($comments as $comment):
    $post = get_post($comment->comment_post_ID);
    ?>

    上記の方法で設定してみたんですが、うまく表示されず、
    全てのカテゴリーのコメントが表示されてしまいました。

    IDの指定方法が間違っているのでしょうか?
    すみませんが、回答よろしくお願いします。

    ‘=>’はダブルアローと言いアロー演算子の一つです
    主に読み込みの意味で使います
    それを踏まえたうえで
    get_comments(ココの説明)
    なのですが
    array(‘status’ => ‘approve’ ,’number’ => 5, ’41’ =>’-$cat’)

    arrayなので引数(get_commentsへ渡される数値)は配列になります
    今回は第一~第三まであり、要素は[status][number][ID]の3つです
    (渡そうと思えばこれ以上でも渡せるのですが・・・)
    要素はどうやって指定するのかと言うとキーワードがあり
    キーワードはココを見てもらうと早いかと思います
    何れを踏まえると書き方は
    ‘[キーワード]’ => ‘[条件]’
    になりますなのでIDを14で絞り込む際には
    ‘ID’ => ’14’
    となるわけです

    追記
    見てたらもうひとつ重大な事を忘れてました
    ’と”で変数を括ると思うのですが’では変数が機能しません
    変数を使う場合”$cat”としないといけないので注意して下さい

    トピック投稿者 rishu

    (@rishu)

    なるほど…ということは14のIDを除外したい場合は、
    以下のような記述になるんでしょうか?

    <?php
    $comments = get_comments(array('status' => 'approve' ,'number' => 5, 'ID' =>'14'));
    foreach($comments as $comment):
    $post = get_post($comment->comment_post_ID);
    ?>

    上記のコードでやってみましたが、うまく表示されませんでした。

    ’と”で変数を括ると思うのですが’では変数が機能しません
    変数を使う場合”$cat”としないといけないので注意して下さい

    というのは、どのように記述すれば良いでしょうか?

    3つ4つ前のコメントですが”-“を付けて下さいね
    get_comments(array(‘status’ => ‘approve’ ,’number’ => 5, ‘ID’ =>’-14′));

    あと定数なのですが変数ではないのでしょうか?コメントIDの取得は直打ちですか?
    取得の方法を考えた方がいいと思いますよ

    <?php
    //コメント情報取得
    get_comments(array('status' => 'approve' ,'number' => 5, 'ID' =>'-14'));
    //取得したコメント分ループ開始
    foreach($comments as $comment):
    	//コメントのIDを取得する
    	$post = get_post($comment->comment_post_ID);
    /******************** ココから内容表示 ********************/
    ?>
    	<!--コメントされたページへのリンクとタイトル-->
    	<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>へのコメント
    	<!--コメントしたユーザー情報とコメントした月日-->
    	(<?php comment_author_link(); ?>より[<?php comment_date('m/d'); ?>])
    	<!--コメント内容-->
    	<?php comment_text(); ?></li>
    
    <?php
    /******************** ココまで内容表示 ********************/
    
    //ループ終了
    endforeach;
    ?>

    コメントの絞り込みIDの話は脇に一度置いとくとして
    まず参考になさってるコードの意味を理解しましょう
    コメントをつけましたので参考になさってください

    トピック投稿者 rishu

    (@rishu)

    回答を参考に以下のように指定をしてみました。

    <?php
    $comments = get_comments(array('status' => 'approve' ,'number' => 5, 'ID' =>'-14'));
    foreach($comments as $comment):
    $post = get_post($comment->comment_post_ID);
    ?>
    <dl class="comments_li">
    <dt><a href="<?php the_permalink(); ?>"><?php the_title(); ?>に<?php comment_author_link(); ?>より</a></dt>
    <?php endforeach; ?>
    </dl>

    しかしこのタグでは、41のカテゴリーも表示されていました。

    CyberCypher様のタグを参考にしたところ、「get_comments(array(」に
    「$comments =」というのは、書かれていなかったのですが、
    入れなくても表示されるものなんでしょうか?
    「$comments =」を抜いて指定した場合、サイドバー全く表示されませんでした…。

    上手く表示されない原因として考えられることはなんでしょうか?

15件の返信を表示中 - 1 - 15件目 (全17件中)
  • トピック「最新のコメント ある特定のカテゴリーを除外」には新たに返信することはできません。