WP PLUGIN ソート対象拡張
・通常、検索、タクソノミーにソート用カスタムフィールドの設定入力欄を追加 ・通常と検索にカスタムフィールド検索処理を実装 ・タクソノミーに通常+カスタムフィールドのメニューを追加 ・タクソノミーに通常+カスタムフィールドとドラッグソートの切り替え用ラジオボタンを追加
This commit is contained in:
@@ -1,8 +1,13 @@
|
||||
<?php
|
||||
/*
|
||||
* Todo: タクソノミーの通常+カスタムフィールドソート処理の追加
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} // Exit if accessed directly
|
||||
|
||||
|
||||
if ( ! trait_exists( 'APOP_ORDER_SETTING' ) ) {
|
||||
|
||||
trait APOP_ORDER_SETTING {
|
||||
@@ -51,7 +56,7 @@ if ( ! trait_exists( 'APOP_ORDER_SETTING' ) ) {
|
||||
if ( is_null( $id ) ) {
|
||||
$per_page_option_data = $per_page_option[ $target ];
|
||||
} else {
|
||||
$per_page_target = $target == 'tax' ? 'taxonomy' : $target;
|
||||
$per_page_target = $target == 'tax' ? 'taxonomy' : $target;
|
||||
$per_page_option_data = $per_page_option[ $per_page_target ][ $id ];
|
||||
}
|
||||
|
||||
@@ -81,7 +86,11 @@ if ( ! trait_exists( 'APOP_ORDER_SETTING' ) ) {
|
||||
}
|
||||
foreach ( $apop_order_param as $order_col => $orders ) {
|
||||
if ( $orders['use'] == 1 ) {
|
||||
$orderby[ $order_col ] = $sort_param[ $orders['sort'] ];
|
||||
if ( $order_col == 'custom_field' ) {
|
||||
$this->set_custom_filed_sort( $orderby, $query, $order_col, $orders, $sort_param );
|
||||
} else {
|
||||
$orderby[ $order_col ] = $sort_param[ $orders['sort'] ];
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( isset( $orderby ) ) {
|
||||
@@ -93,11 +102,20 @@ if ( ! trait_exists( 'APOP_ORDER_SETTING' ) ) {
|
||||
$this->set_per_page( $query, 'search' );
|
||||
}
|
||||
|
||||
private function set_custom_filed_sort( &$orderby, $query, $order_col, $orders, $sort_param ) {
|
||||
if ( $order_col == 'custom_field' ) {
|
||||
$meta_key = $orders['field']['meta_key'];
|
||||
$orderby_key = $orders['field']['value_type'];
|
||||
$orderby_sort = $orders['sort'];
|
||||
$orderby[ $orderby_key ] = $sort_param[ $orderby_sort ];
|
||||
$query->set( 'meta_query', self::get_all_post_args( $meta_key ) );
|
||||
}
|
||||
}
|
||||
|
||||
private function set_orderby( $query, $id, $target, $order_key ) {
|
||||
$order_settings = get_option( '_apop_' . $order_key . '_order' );
|
||||
if ( isset( $order_settings['target_cat'][ $id ] ) && $order_settings['target_cat'][ $id ] == 1 ) {
|
||||
$sort_meta_key = '_apop_post_' . $target . '_' . $id;
|
||||
//$query->set( 'meta_key', $sort_meta_key );
|
||||
$query->set( 'meta_query', self::get_all_post_args( $sort_meta_key ) );
|
||||
$query->set( 'orderby', array( 'meta_value_num' => 'ASC' ) );
|
||||
$this->set_per_page( $query, self::get_per_page_tag( $target ), $id );
|
||||
|
||||
Reference in New Issue
Block a user