welcart:商品マスターの一覧を公開日時順に並べる
Tag: Welcart
welcartの商品マスターの並び順は登録順で、内部的にはpost_idでソートされているようです。
で、皆さん商品一覧の並び順を変更する時に「公開日時」を変更すると思うのですが、「公開日時」で並び替えても管理画面の商品マスターには反映しないのでちょっと確認しにくいですよね。
なので「公開日時」で並び替えれるようにしました。
公開日時でソートするためのリンクを追加
商品マスターの並び順を変更するためにはパラメーター付きのURLにアクセスさせる必要があるのですが、それをどこに出すかが問題です。
探した結果、「操作フィールド表示」の中にしか追加で入れられなかったのでこれで対応しました。
ソートする時いちいちここを開かないといけないので面倒なのですが、他に追加できるところがないんですよね…
追加するとこうなります。
フックを追加
functiuons.phpにフックを追加します。
function sv_item_list_post_order() { echo '公開日時順でソート '; echo '<span><a href="'.admin_url().'admin.php?page=usces_itemedit&changeSort=post_date&switch=ASC">▲</a><span> / '; echo '<span><a href="'.admin_url().'admin.php?page=usces_itemedit&changeSort=post_date&switch=DESC">▼</a><span>'; } add_action( 'usces_action_item_list_searchbox_bottom', 'sv_item_list_post_order' );
アクションフック「usces_action_item_list_searchbox_bottom」は操作フィールド表示の中に任意の項目を追加できるフックです。
結果
わかりやすいように商品コードに投稿ID、商品名に公開日時としています。
ちゃんと投稿ID・公開日時データはこれと同じものになってます。
デフォルトはpost_id順
公開日時でソート後。降順昇順対応。
デフォルトで公開日時順にする
一々変更するのめんどい場合は初期値を公開日時にしておくと便利です。
今度はフィルターフック「usces_filter_item_class_sortColumn」を使います。
function sv_set_item_list_sortColumn() { return 'post_date'; } add_filter( 'usces_filter_item_class_sortColumn', 'sv_set_item_list_sortColumn' );
usces_filter_item_class_sortColumnはクッキーが存在しない場合に初期値を設定できるフックです。
ここが元々post.IDになっているのでそれをpost_dateに書き換えてやります。
並び順は元々降順なのでそのままで。
昇順にしたい場合は下記を追加。
function sv_set_item_list_sortSwitchs() { return 'ASC'; } add_filter( 'usces_filter_item_class_sortSwitchs', 'sv_set_item_list_sortSwitchs' );
usces_filter_item_class_sortSwitchsは同じくクッキーが存在しない場合に初期値を設定できるフックです。