商品一覧ページでの商品の並び順変更

フォーラム 使い方全般 商品一覧ページでの商品の並び順変更

  • このトピックには4件の返信、2人の参加者があり、最後にkitamuuuにより9年、 11ヶ月前に更新されました。
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • 投稿者
    投稿
  • #69543
    gomanome
    参加者

    ——————————————-
    WordPress のバージョン:3.7.1
    Welcart のバージョン:1.3.13
    ご利用のテーマ:Welcart Default を親テーマとするオリジナル子テーマ
    症状を確認したブラウザ:Firefox
    サーバー(会社名、サービス名):CPI PHPバージョン5.2.6
    SSLの利用: あり
    WordPress のパーマリンク設定: カスタム構造 /%category%/%post_id%.html
    ——————————————–
    はじめまして、すばらしいプラグインを開発してくださりありがとうございます。
    商品登録等もほぼ終了したところで思うようにできない部分があり、ご相談させていただきます。

    商品一覧ページの表示をカスタマイズするため、子テーマ側に「archive.php」をコピーし、それをカスタマイズしています。
    表示内容自体は、商品ページへのリンクつきの商品名のみの表示にするだけですので、
    問題なく実現していますが、並び順を変更したいと思い、functions.phpにpre_get_postsフックを使った以下のような指定をしたのですが反映しません。
    実は、反映できていたと思うのですが、諸事情があり、全商品を再登録したところ、反映しなくなってしまったのです。
    全商品の再登録を行なう前と後で変更したところはありません。
    何か見落としているところがありますでしょうか? もしくは、管理画面で指定できたりするのでしょうか?
    アドバイスいただけますと助かります。よろしくお願いいたします。

    
    function getcatorder( $query ) {
        if ( is_admin() || ! $query->is_main_query() )
            return;
    
        if ( $query->is_category() ) {
            $query->set( 'posts_per_page', '-1' );
            $query->set( 'orderby', 'usces_the_itemCode()' ); // 商品コードで並び替え
            $query->set( 'order', 'ASC' );
            return;
        }
    }
    add_action( 'pre_get_posts', 'getcatorder' );
    
    #69557
    kitamuuu
    参加者

    こんにちは。
    orderbyの指定の仕方が違いますよ。usces_the_itemCode()ではなく

    $query->set( 'orderby', 'title' );

    とすればうまくいくと思います。

    • この返信は9年、 11ヶ月前にkitamuuuが編集しました。
    #69562
    gomanome
    参加者

    ご返信いただき、ありがとうございます。
    説明が不十分ですみません。「title」を指定した場合の並び順は、
    「商品名」順になると思うのですが、「商品コード」順で並べたいのです。

    どちらにしても、現在、上記の指定部分を title と指定しても、
    「商品名」順には並ばす、よくわからない順番で並んでしまいます。
    取得件数は反映しますのでフックはかかっていると思います。

    「商品コード」はカスタムフィールドなので別の書き方になるのでしょうか?

    #69569
    gomanome
    参加者

    過去のフォーラムを参考にして、解決できたように思われます。
    参考にさせていただいたのは、こちらのトピックです。
    https://www.welcart.com/community/forums/topic/%E5%95%86%E5%93%81%E3%81%AE%E4%B8%A6%E3%81%B9%E6%9B%BF%E3%81%88#post-61624

    
    $query->set( 'orderby', 'title' );
    

    を指定してタイトル順に並んでいるように見えていたのは、
    「たまたま」商品の作成順が希望と同じだったからではないかと思われます。

    このコードで正しいのか自信はないのですが、とりあえず希望の実装になりました。

    
    function getcatorder( $query ) {
    	if ( is_admin() || ! $query->is_main_query() )
    		return;
    
    	if ( $query->is_category() ) {
    		$query->set( 'posts_per_page', '-1' );
    		$query->set( 'orderby', 'meta_value' );
    		$query->set( 'meta_key', '_itemCode' );
    		$query->set( 'order', 'ASC' );
    		return;
    	}
    }
    add_action( 'pre_get_posts', 'getcatorder' );
    

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

    #69570
    kitamuuu
    参加者

    すみません。titleは商品名でしたね!
    その記述で正しいはずですよ。

5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • このトピックに返信するにはログインが必要です。