• カスタムフィールドテンプレートを利用して商品紹介のページを作っています

    [商品名]
    type = text
    size = 40

    [価格]
    type = text
    size = 40

    というような感じでフィールドを作り値を入れています

    search.phpで検索結果一覧を表示させるようにしています
    価格の安い順に並べ替えたくて
    global $query_string;
    query_posts($query_string . “&post_type=post&posts_per_page=7&meta_key=価格&orderby=meta_value_num&order=DESC”);

    を while (have_posts()) : the_post();  の前に記述したところ
    検索結果が表示されなくなってしまいました
    meta_keyを入れると表示が消えてしまうようです

    global $query_string;
    query_posts($query_string . “&post_type=post&posts_per_page=7”);

    だけだとちゃんと表示されます(これだけだと登録順になってしまいます)

    いろいろ調べてみたのですが、やっぱり解決できずこちらで質問をさせていただきました

    お分かりの方がいるようでしたらご教示いただければと思います
    よろしくお願いいたします

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • 引数に日本語が混ざっているからではないでしょうか?
    下記のように書きなおしてみるとどうでしょう?

    global $wp_query;
    query_posts( array_merge( $wp_query->query, array(
        'post_type' => 'post',
        'posts_per_page' => 7,
        'meta_key' => '価格',
        'orderby' => 'meta_value_num',
        'order' => 'DESC'
    ) ) );

    上記の例ではquery_postsを使用していますが、query_postsの使用は推奨されていません。
    functions.phpで、pre_get_postsフックを使って条件を変更するのが良いです。

    http://brushape.com/wordpress/%E3%80%90pre_get_posts%E3%80%91%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89ni%E6%97%A5%E4%BB%98/

    トピック投稿者 takayukki

    (@takayukki)

    inc2734さん
    ありがとうございます

    変更してみたのですが、同じ結果でした。
    日本語もpriceに変更してみたのですが、ダメでした

    もっと根本的に違うところがあるのでしょうか?

    ショートコードの設定を FORMAT #1

    • 商品名:[商品名]
    • エリア:[扱い店舗]

    のように設定し

    [cftsearch format=1]
    で検索画面を作っています

    調べてみると
    <input type=”hidden” name=”orderby” value=”price”>

    みたいなものを追加するとかあるんですが、このあたりはよくわかりません
    あるいは検索条件に価格的な要素を加えないといけなかったりするのでしょうか?
    できれば価格で検索させないようにしたいと思っているんですが…

    トピック投稿者 takayukki

    (@takayukki)

    追記です

    ————-

    function custom_shohin_posts($query) {
        if ( is_admin() || ! $query->is_main_query() )
           return;
    
        if ( $query->is_search() ) {
           $query->set( 'posts_per_page', '7' );
           $query->set( 'orderby', 'meta_value_num' );
           $query->set( 'meta_key', 'price' );
           $query->set( 'order', 'DESC' );
       }
    }
    add_action( 'pre_get_posts', 'custom_shohin_posts' );

    という感じでfunctions.phpに書き込んで試してみましたが、ダメでした
    search.phpには何もしていない状態です

    検索結果の表示はされるのですが、並べ替えはされていない状態です

    うーん、なぜでしょうね…
    priceは半角数字のみで入力されていますか?
    カンマなど含まれていないでしょうか?

    トピック投稿者 takayukki

    (@takayukki)

    inc2734さん

    たびたびありがとうございます
    数字は半角数字のみです
    書き方に問題はなさそうでしょうか?

    ちなみにpre_get_postsのほうは検索結果が表示できていたのですが、確かめたところ何も反映されてなかっただけのようです

    テーマもTwenty Elevenに変えてみたりもしたんですが…

    おそらく単純なところで私が気づいてないだけかもしれないのですが悩ましいです
    なにか違う方法で並び替えのできる方法を考えてみた方がいいんでしょうか?
    ただ結局カスタムフィールドを使うかぎりはプラグインを変えてみてもここをクリアしないといけないですよね

    http://luvsic.net/item/157

    上記のサイトにあるように、検索ページにhiddenタグを埋め込んで並び順など変更するようです。検索ページに下記を記述して動作させるとどうでしょう?

    <input type="hidden" name="orderby" value="price">
    <input type="hidden" name="order" value="DESC">
6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「カスタムフィールドテンプレートでの並べ替えができないです」には新たに返信することはできません。