array( 'publish', 'draft' ), 'posts_per_page' => - 1, ]; if ( $type == 'registered' ) { $args['orderby'] = 'meta_value_num'; $args['order'] = 'ASC'; $args['meta_key'] = '_apop_post_search'; } else { $exclude = implode( ',', $exclude_posts ); if ( ! empty( $exclude ) ) { $args['exclude'] = $exclude; } } return get_posts( $args ); } public static function get_all_taxonomies( $key ) { if ( $key !== 'taxonomy' ) { return get_terms( array( 'taxonomy' => $key, 'get' => 'all' ) ); } return get_taxonomies( array( 'public' => true, '_builtin' => false ) ); } public static function get_cat_tag_list( $target, $key ): array { $opt = get_option( '_apop_' . $target . '_order' ); if ( ! isset( $opt['target_cat'] ) ) { return array(); } if ( $key == 'taxonomy' ) { return self::create_custom_tax_term( $opt ); } else { return self::create_tax_term( $opt, $key ); } } private static function create_custom_tax_term( $opt ): array { $tax_data = []; foreach ( $opt['target_cat'] as $tax_id => $status ) { //フラグが立っているカスタムタクソノミーは情報を取得する if ( $status ) { $args = array( 'taxonomy' => get_term( $tax_id )->taxonomy, 'hide_empty' => 0, 'include' => $tax_id, ); $tax_data[] = get_terms( $args ); } } return $tax_data; } private static function create_tax_term( $opt, $key ) { $include = array(); foreach ( $opt['target_cat'] as $tax_id => $status ) { //フラグが立っているタクソノミーIDを取得 if ( $status ) { $include[] = $tax_id; } } $include_tax = implode( ',', $include ); if ( ! empty( $include_tax ) ) { $args = array( 'taxonomy' => $key, 'hide_empty' => 0, 'include' => $include_tax, ); return get_terms( $args ); } return array(); } public static function create_order_list( $tax_data, $tax_key, $exclude_posts ): array { $target_posts = self::get_sort_post_list( $tax_data->term_id, $tax_key, $tax_data->taxonomy ); $list = []; $sort_num = 0; foreach ( $target_posts as $key => $target_post ) { $sort_num = $key + 1; $exclude_posts[] = $target_post->ID; $list[] = '
  • ' . $sort_num . '' . get_the_title( $target_post->ID ) . '
  • '; } return array( implode( PHP_EOL, $list ), $exclude_posts, $sort_num, ); } private static function get_sort_post_list( $tax_id, $search_param, $tax_name ) { $args = [ 'post_status' => array( 'publish', 'draft' ), 'posts_per_page' => - 1, 'orderby' => 'meta_value_num', 'order' => 'ASC', 'meta_key' => '_apop_post_' . self::create_post_sort_key( $tax_name, $search_param ) . '_' . $tax_id, ]; self::create_post_tax_query( $args, $search_param, $tax_name, $tax_id ); return get_posts( $args ); } private static function create_post_sort_key( $tax_name, $tax_key ) { if ( $tax_key == 'taxonomy' ) { return 'tax'; } return $tax_name; } private static function create_post_tax_query( &$args, $key, $tax_name, $tax_id ) { if ( $key == 'taxonomy' ) { $args['tax_query'] = array( array( 'taxonomy' => $tax_name, 'field' => 'term_id', 'terms' => $tax_id, 'include_children' => false ) ); } else { $args[ $key ] = $tax_id; } } public static function create_product_none_order_list( $tax_data, $tax_key, $exclude_posts, $sort_num ): string { $target_posts_no_order = self::get_none_sort_post_list( $tax_data->term_id, $tax_key, $exclude_posts, $tax_data->taxonomy ); if ( count( $target_posts_no_order ) > 0 ) { $sort_num = $sort_num ?? 0; foreach ( $target_posts_no_order as $key => $target_post_no_order ) { $sort_num_no_order = $sort_num + $key + 1; $list[] = '
  • ' . $sort_num_no_order . '' . get_the_title( $target_post_no_order->ID ) . '
  • '; } if ( isset( $list ) ) { return implode( PHP_EOL, $list ); } } return ''; } private static function get_none_sort_post_list( $tax_id, $search_param, $exclude_posts, $tax_name ) { $args = array( 'post_status' => array( 'publish', 'draft' ), 'posts_per_page' => - 1, ); $exclude = implode( ',', $exclude_posts ); if ( ! empty( $exclude ) ) { $args['exclude'] = $exclude; } self::create_post_tax_query( $args, $search_param, $tax_name, $tax_id ); return get_posts( $args ); } public static function create_cat_per_page( $opt_per_page, $type ): array { $cat_per_page = $opt_per_page[ $type ] ?? 'default'; $set = ''; $cat_per_page_num = ''; if ( isset( $opt_per_page[ $type ] ) ) { if ( $opt_per_page[ $type ] != 'default' && $opt_per_page[ $type ] != '-1' ) { $set = ' checked="checked"'; $cat_per_page_num = $cat_per_page; } } return array( '_per_page' => $cat_per_page, '_set' => $set, '_per_page_num' => $cat_per_page_num, ); } } }