2017年9月4日月曜日

Welcart e-Commerceの商品 カテゴリ 一覧表示の順序

投稿記事の一覧表示順を変えるには

1.Intuitive Custom Post Orderプラグインをいんすとーるする
2.カスタムフィールド + テーマのための関数に記述する
3.カスタムフィールド + query_postsで設定する

などの方法がありますが、Welcart e-Commerceの商品の表示順を任意に設定するには「1」のプラグインは使えません。

単純にカテゴリページを開く場合、例えば「Breadcrumb NavXT」などで表示されているパンくずリストをクリックするなどで表示されるカテゴリページの商品を任意に並び替えるには
「2」の「カスタムフィールド + テーマのための関数に記述する」で実装できます。「3」ではうまくいきません(私の場合)。

テーマのための関数 (functions.php)にコードを記述する方法はこちらを参考にさせて頂きました。
というかいつものコピペ。

http://while-creation.com/post-order-customfield/

*******************************************
function test_pre_get_posts($query) {
if ( is_admin() || ! $query->is_main_query() ) {
return;
}

if ( $query->is_category() ) {
$query->set( 'meta_key', '表示順序' );
$query->set( 'orderby', 'meta_value_num' );
$query->set( 'order', 'ASC' );
}
}
add_action( 'pre_get_posts', 'test_pre_get_posts' );
*******************************************


「表示順序」の部分をカスタムフィールドの項目名に合わせれば、ほかの作業なしに商品が並び変りました。




そして、任意の場所にカテゴリ内の商品を並べる場合は「3」のquery_postsでの設定がいいようです。「query_posts」で

<?php
query_posts('
category_name=category&
posts_per_page=0&
orderby=meta_value_num&
order=ASC&
meta_key=並び順
'); 
?>

とすると、カスタムフィールドの「並び順」に記入した順番(この場合は昇順)に表示されます。

「query_posts」は非推奨らしいですが、とりあえず動くので使っています。「get_posts()」にするべきみたいですが。。

0 件のコメント: