• 解決済 mi_325

    (@mi_325)


    こんにちは。
    表題の件について、フォーラム等拝見したのですが見つからなかったので質問させて下さい。

    wordpressの検索機能とプラグインのSearch Everythingを利用して、固定ページがカスタムフィールドに持っているメタデータの値を対象にした検索をしています。
    (正確には、ユーザーに検索してもらうのではなくて、あらかじめ検索キーワードを仕込んだURLhttp://example.com/wp/?s=rabbit等を作って、そのリンクを選んでもらいます)
    このとき、search.phpのテンプレートを利用して検索結果が表示されていると思うのですが、このリストはページの作成日順になっているのでしょうか?
    この表示順をランダムに並べ替えることはできるでしょうか?

    orderby=randみたいなことができないかと思い、
    search.phpで<?php query_posts('orderby=rand'); ?><?php if (have_posts()) : ?>…とやってみたら、固定ページは全く表示されず、全ての投稿記事がリストされてしまいました。

    できれば、orderby=rand かつ nopaging=true&post_type=page が実現できたらいいなと思っているのですが、search.phpにquery_postsを組む込む方法がわかりません。

    どなたかおわかりになる方ご助言をいただけたら幸いです。よろしくお願いします!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • query_posts(array(
     'orderby'      => rand,
     'post_type'     => page,
     'nopaging' => true,
    ));

    Codexの通りに記述したとしたらこうなるかな?(未検証)

    トピック投稿者 mi_325

    (@mi_325)

    shokun0803 様

    早速のレスありがとうございます、そしていつもお世話になっております。

    教えて頂いたコードを実行したところ、ランダム表示・ページ分割無し・ページのみの抽出 は上手く行ったのですが、全部の固定ページがリストされてしまいました。どうやら、親ページがカスタムフィールドにその値を持っていると、その子ページも抽出されてしまうんですね。

    そこで、親ページだけが持っているカスタムフィールドの項目と値を、Codexの通り

    ‘meta_key’ => ‘フィールド名’,
    ‘meta_value’ => ‘値’,

    等として追記しましたら、親ページだけがきちんと表示されるようになりました!

    が。
    今度は、キーワードを何で検索しても、全ての親ページが表示されてしまいます…。
    URLに入っている、?s=rabbitが働いていないのは、もしかしてCodexで言うところの

    query_posts 関数はページのメインクエリを上書きし、置き換えます。

    ということなんでしょうか?

    検索では$sに検索ワードを保持していることがわかったので、meta_value => $s,としたら上手く行きそうなんですが、固定ページが持っている値が複数の場合(例:「動物」の項目に、「rabbit,ferret」 などとして複数値を持っている)、どちらか片方だけを検索しても出てきませんでした。query_postsを記述していない状態だと、部分一致?でも拾ってくれていたので、同じ動作にはならず…

    重ねてご助言いただけましたら幸いです。

    query_posts('orderby=rand');

    このコードを下記のように修正して動きませんか?

    query_posts($query_string . '&orderby=rand');

    トピック投稿者 mi_325

    (@mi_325)

    方法についてご提案くださったお二方、どうもありがとうございました。
    大変遅くなりましたが、以下の方法でもって一通りの運用が行なえるようになりました。

    <?php
    query_posts(array(
    'orderby' => rand,
    'post_type' => page,
    'nopaging' => true,
    'meta_value' => $s,
    ));
     ?>

    また、メタデータとして同じ項目に複数の値を設定した物は、すべて別々の項目に振り分けて検索を行なうようにしました。

    ありがとうございました!

4件の返信を表示中 - 1 - 4件目 (全4件中)

トピック「検索結果を表示順ランダムでリストしたい」には新たに返信することはできません。