フォーラム

2.5で検索結果のソート(ページと記事) (9 件の投稿)

  1. notesofsounds
    メンバー
    4 years前の投稿 #

    WordPress2.5日本語版を利用しています。
    2.5から標準でページの検索もできるようになり重宝していますが、例えば検索結果を「ページ→記事」のような順番でソートすることはできるでしょうか。
    search.phpにループを置いて結果を表示していますが、ループの指定でソート(日付順やID順など)ができそうなのはわかるのですが、ページと記事を区別する方法がわかりません。

    また、検索フォーム自体にラジオボタンなどであらかじめページと記事を区別して(あるいは両方)検索することはできるでしょうか。

    CODEXなどを見てみたのですが、2.5の情報でうまく見つけることができなかったので、参考になるURIの提示などでもいただければ大変助かります。

  2. dxd5001
    メンバー
    3 years前の投稿 #

    「ソート」というにはちょっと無駄があるかもしれませんが、
    DBのwp_postsテーブルに「post_type」というフィールドがあり、「post」「page」などの値を持っているので

    <?php if(have_posts()): while(have_posts()): the_post(); ?>
    <?php if($post->post_type == "page"): ?>
    記事コンテンツ
    <?php endif; ?>
    <?php endwhile; endif; ?>
    
    <?php if(have_posts()): while(have_posts()): the_post(); ?>
    <?php if($post->post_type == "post"): ?>
    記事コンテンツ
    <?php endif; ?>
    <?php endwhile; endif; ?>

    とすれば解決するのではないでしょうか。
    1つ目のループでは「post」をフィルタリングして、2つ目のループでは逆に「page」をフィルタリングします。
    あいだにrewind_posts()を入れてクエリを巻き戻す必要があるのかと思いましたが、なくてもいけるようです。

  3. notesofsounds
    メンバー
    3 years前の投稿 #

    随分前の記事にご返信いただいて有難うございます。
    私も最近調べなおしてみて、post_typeに行き着きました。ご提示いただいた方法も試してみたのですが、検索結果が1ページに収まらない場合、2ページ目にも「ページ→ポスト」と並んでしまい、思ったような結果が得られませんでした。

    以下の記事で、検索時に振り分けられればと思ったのですが、返信いただいた方にご提示いただいた方法がまだうまく調べられていません。
    http://ja.forums.wordpress.org/topic/584

    検索結果がうまく分けられないようであれば、検索時にpost_typeで振り分けられればいいのかな、と思うのですが、まだうまくいっていません。むずかしいですねー(;;

  4. taikiken
    メンバー
    3 years前の投稿 #

    問題解決にはほど遠いのですが、
    「検索結果はページ分割しない」ように
    query_posts($query_string."&showposts=-1")
    というのはどうでしょう。

    続けてdxd5001さんの解決法・・・

  5. notesofsounds
    メンバー
    3 years前の投稿 #

    >> taikikenさん

    こちらでもご返信有難うございますm(_ _)m

    「検索結果はページ分割しない」ように
    query_posts($query_string."&showposts=-1")
    というのはどうでしょう。

    これも自分の管理しているサイトの事情で恐縮なのですが、固定ページ数・投稿数とも多く、検索ワードによっては数十件引っかかってしまいます。ですので、やっぱり検索時に振り分けた方が解決策としてはベターかなと思っているのですが、引き続きうまくいかず^^;

  6. taikiken
    メンバー
    3 years前の投稿 #

    検索時に振り分けた方が解決策としてはベターかなと思っている

    わかりました。

    引き続きうまくいかず^^;

    何かお試しになっていることがあるのでしょうか?
    できればお試しになったことをお書きになっていた方が良いかと思います、でないとお試しになって不採用のことも返信される可能性があります。

    query_postsでorderby= post_typeができれば、かなりゴールに近づきそうですがお試しにはなりました?

  7. notesofsounds
    メンバー
    3 years前の投稿 #

    何かお試しになっていることがあるのでしょうか?

    色々調べてみているのですが、具体的に試していることはありません。
    orderby=post_typeは、実現すれば求めている結果になりそうですが、どうしたらいいかわかりません(適切なコードが書けない)。

  8. taikiken
    メンバー
    3 years前の投稿 #

    どうしたらいいかわかりません(適切なコードが書けない)。

    CODEXを見るとテンプレートタグの使い方を説明しています。
    http://codex.wordpress.org/Template_Tags/query_posts

    query_posts($query_string."&orderby=post_type")
    ですが実現できるかどうか、試していません・・使えないようでした。

    こちらでもご返信有難うございます

    あっ、そうでしたね。
    フィルター、フックはSearch Everythingのソースを見ると参考になると思います。
    http://wordpress.org/extend/plugins/search-everything/

  9. notesofsounds
    メンバー
    3 years前の投稿 #

    重ね重ね有難うございます。

    query_posts($query_string."&orderby=post_type")
    ですが実現できるかどうか、試していません・・使えないようでした。

    試してみました。どうもうまくいかないですね。
    CODEXも色々みてみましたが、そもそもpost_typeで並べ替えは対応していないみたいですね。

    フィルター、フックはSearch Everythingのソースを見ると参考になると思います。
    http://wordpress.org/extend/plugins/search-everything/

    なるほど!search everythingはページを除外などもオプションであった気がするので、参考になりそうです。有難うございます。

返信

ログイン しなければ投稿できません。

About this Topic