ARCHIVE POST ORDER PLUS:カスタム投稿アーカイブの追加

カスタム投稿アーカイブ対応
全体設定で「全件」指定時に「全体設定に従う」の設定が反映されないバグの修正
This commit is contained in:
2021-07-19 19:47:26 +09:00
parent b8dcf1c44c
commit 4bc96228bd
16 changed files with 848 additions and 338 deletions
+97 -51
View File
@@ -6,10 +6,11 @@ if ( ! defined( 'ABSPATH' ) ) {
if ( ! class_exists( 'APOP_UI' ) ) {
require_once __DIR__ . '/../util/apop-customfield-select.php';
require_once __DIR__ . '/../util/apop-customposts.php';
class APOP_UI {
use CUSTOMFIELD_SELECT;
use CUSTOMFIELD_SELECT, CUSTOMPOSTS;
public static function get_order_type( $type ) {
$type_data = get_option( $type );
@@ -68,6 +69,17 @@ if ( ! class_exists( 'APOP_UI' ) ) {
);
}
private static function get_all_custom_posts() {
$custom_posts = array_values( get_post_types( array( 'public' => true, '_builtin' => false ) ) );
$custom_post_data = array();
foreach ( $custom_posts as $custom_post ) {
$label = get_post_type_object( $custom_post )->label;
$custom_post_data[ $custom_post ] = $label;
}
return $custom_post_data;
}
private static function get_all_taxonomies( $key ) {
if ( $key !== 'taxonomy' ) {
return get_terms( array( 'taxonomy' => $key, 'get' => 'all' ) );
@@ -255,6 +267,37 @@ value="' . esc_html( $sort_num ) . '">
}
}
public static function disp_customposts_setting( $key, $title, $order_name ) {
$custom_post_data = APOP_UI::get_all_custom_posts();
if ( count( $custom_post_data ) > 0 ) {
$order_name = $order_name;
$order = $key;
echo '<tr><th scope="row">' . esc_html( $title ) . '</th><td>';
include APOP_PLUGIN_PATH . 'template/setting_parts_customposts.php';
echo '</td></tr>';
}
}
public static function create_custom_posts_per_page( $opt_per_page, $type, $slug ): array {
$cat_per_page = $opt_per_page[ $type ][ $slug ] ?? 'default';
$checked = '';
$cat_per_page_num = '';
if ( isset( $opt_per_page[ $type ][ $slug ] ) ) {
if ( $opt_per_page[ $type ][ $slug ] != 'default'
&& $opt_per_page[ $type ][ $slug ] != '-1'
&& $opt_per_page[ $type ][ $slug ] != 'all' ) {
$checked = ' checked="checked"';
$cat_per_page_num = $cat_per_page;
}
}
return array(
'_per_page' => $cat_per_page,
'_checked' => $checked,
'_per_page_num' => $cat_per_page_num,
);
}
public static function create_tax_per_page( $opt_per_page, $type, $id ): array {
$cat_per_page = $opt_per_page[ $type ][ $id ] ?? 'default';
$checked = '';
@@ -287,56 +330,7 @@ value="' . esc_html( $sort_num ) . '">
if ( isset( $order_param_base[ $id ] ) ) {
$order_param = $order_param_base[ $id ];
}
$target_keys = self::set_search_normal_target_keys( $order_param );
$target_values = array(
'date' => __( 'Published', APOP_DOMAIN ),
'title' => __( 'Post Title', APOP_DOMAIN ),
'ID' => 'ID',
'modified' => __( 'Modified', APOP_DOMAIN ),
'custom_field' => __( 'Custom filed 1', APOP_DOMAIN ),
'custom_field_2' => __( 'Custom filed 2', APOP_DOMAIN ),
'custom_field_3' => __( 'Custom filed 3', APOP_DOMAIN ),
'custom_field_4' => __( 'Custom filed 4', APOP_DOMAIN ),
);
$list = array();
foreach ( $target_keys as $target_key ) {
$cnv_order_params = self::set_order_list_param( $order_param, $target_key );
$use = $cnv_order_params['use'];
$sort = $cnv_order_params['sort'];
$no_order_class = $cnv_order_params['no_order_class'];
$name_use_key = '_' . $name_key . '[' . $target_key . '][use]';
$name_sort_key = '_' . $name_key . '[' . $target_key . '][sort]';
if ( strpos( $target_key, 'custom_field' ) !== false ) {
$target_key_check_class = 'custom_field_check';
} else {
$target_key_check_class = 'sort_' . $target_key . '_check';
}
echo '<li class="product-list' . esc_attr( $no_order_class ) . '">
<div class="product-list-type-label"><b>' . esc_attr( $target_values[ $target_key ] ) . '</b></div>
<div class="product-list-sort-type">
<label>
<input type="hidden" name="' . esc_attr( $name_use_key ) . '"
value="0"' . esc_attr( self::set_search_normal_checked( $use, 0 ) ) . '>
<span class="en_dis_label">' . __( 'Enabled', APOP_DOMAIN ) . '</span><input class="' . esc_html( $target_key_check_class ) . '"
type="checkbox" name="' . esc_attr( $name_use_key ) . '" value="1"' . esc_attr( self::set_search_normal_checked( $use, 1 ) ) . '>
</label>
<label>
<input class="order_param" type="radio"
name="' . esc_attr( $name_sort_key ) . '"
value="1"' . esc_attr( self::set_search_normal_checked( $sort, 1 ) ) . '>' . __( 'Asc', APOP_DOMAIN ) . '</label>
<label>
<input class="order_param" type="radio"
name="' . esc_attr( $name_sort_key ) . '"
value="2"' . esc_attr( self::set_search_normal_checked( $sort, 2 ) ) . '>' . __( 'Desc', APOP_DOMAIN ) . '</label>';
if ( strpos( $target_key, 'custom_field' ) !== false ) {
self::create_custom_field_sort_type( $name_key, $target_key, $cnv_order_params );
}
echo '</div>
</li>';
}
self::create_normal_sort_list( $name_key, $order_param );
}
private static function create_custom_field_sort_type( $name_key, $target_key, $cnv_order_params ) {
@@ -469,5 +463,57 @@ value="' . esc_html( $sort_num ) . '">
}
}
public static function create_normal_sort_list( $name_key, $order_param ) {
$target_keys = self::set_search_normal_target_keys( $order_param );
$target_values = array(
'date' => __( 'Published', APOP_DOMAIN ),
'title' => __( 'Post Title', APOP_DOMAIN ),
'ID' => 'ID',
'modified' => __( 'Modified', APOP_DOMAIN ),
'custom_field' => __( 'Custom filed 1', APOP_DOMAIN ),
'custom_field_2' => __( 'Custom filed 2', APOP_DOMAIN ),
'custom_field_3' => __( 'Custom filed 3', APOP_DOMAIN ),
'custom_field_4' => __( 'Custom filed 4', APOP_DOMAIN ),
);
foreach ( $target_keys as $target_key ) {
$cnv_order_params = self::set_order_list_param( $order_param, $target_key );
$use = $cnv_order_params['use'];
$sort = $cnv_order_params['sort'];
$no_order_class = $cnv_order_params['no_order_class'];
$name_use_key = '_' . $name_key . '[' . $target_key . '][use]';
$name_sort_key = '_' . $name_key . '[' . $target_key . '][sort]';
if ( strpos( $target_key, 'custom_field' ) !== false ) {
$target_key_check_class = 'custom_field_check';
} else {
$target_key_check_class = 'sort_' . $target_key . '_check';
}
echo '<li class="product-list' . esc_attr( $no_order_class ) . '">
<div class="product-list-type-label"><b>' . esc_attr( $target_values[ $target_key ] ) . '</b></div>
<div class="product-list-sort-type">
<label>
<input type="hidden" name="' . esc_attr( $name_use_key ) . '"
value="0"' . esc_attr( self::set_search_normal_checked( $use, 0 ) ) . '>
<span class="en_dis_label">' . __( 'Enabled', APOP_DOMAIN ) . '</span><input class="' . esc_html( $target_key_check_class ) . '"
type="checkbox" name="' . esc_attr( $name_use_key ) . '" value="1"' . esc_attr( self::set_search_normal_checked( $use, 1 ) ) . '>
</label>
<label>
<input class="order_param" type="radio"
name="' . esc_attr( $name_sort_key ) . '"
value="1"' . esc_attr( self::set_search_normal_checked( $sort, 1 ) ) . '>' . __( 'Asc', APOP_DOMAIN ) . '</label>
<label>
<input class="order_param" type="radio"
name="' . esc_attr( $name_sort_key ) . '"
value="2"' . esc_attr( self::set_search_normal_checked( $sort, 2 ) ) . '>' . __( 'Desc', APOP_DOMAIN ) . '</label>';
if ( strpos( $target_key, 'custom_field' ) !== false ) {
self::create_custom_field_sort_type( $name_key, $target_key, $cnv_order_params );
}
echo '</div>
</li>';
}
}
}
}