1.Intuitive Custom Post Orderプラグインをいんすとーるする
2.カスタムフィールド + テーマのための関数に記述する
3.カスタムフィールド + query_postsで設定する
などの方法がありますが、Welcart e-Commerceの商品の表示順を任意に設定するには「1」のプラグインは使えません。
などの方法がありますが、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()」にするべきみたいですが。。
「query_posts」は非推奨らしいですが、とりあえず動くので使っています。「get_posts()」にするべきみたいですが。。
0 件のコメント:
コメントを投稿