Files
POST_ORDER_BY_ARCHIVE/class/class.apop.order.php
T
nobu 05b5fa91aa WP PLUGIN アーカイブページの投稿表示順設定
・不要な初期化を削除
・カスタムタクソノミー対応
・設定画面のタブ化
・設定画面各タクソノミーの投稿リスト表示をメソッド化
・name属性の閉じ忘れ修正
・不要なreturn削除
・APOP_UI::create_product_none_order_list() returnに変数が未設定の場合の条件を追加
・readmeに若干加筆
2021-05-05 18:07:14 +09:00

103 lines
2.5 KiB
PHP

<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
} // Exit if accessed directly
if ( ! class_exists( 'APOP' ) ) {
class APOP {
const TEMPLATE_DIR = __DIR__ . '/../template/';
public function __construct() {
add_action( 'admin_menu', array( $this, 'add_pages' ) );
}
public function add_pages() {
add_menu_page(
'APO +',
'APO +',
'level_8',
'apop_post_sort',
array( $this, 'show_option_page' ),
'',
50
);
add_submenu_page(
'apop_post_sort', // parent_slug
'Select taxonomy', // page_title
'タクソノミー選択', // menu_title
'administrator', // capability
'apop_post_sort_setting', // menu_slug
array( $this, 'display_setting_page' ) // function
);
}
public function display_setting_page() {
if ( isset( $_POST['_apop_cat_order'] )
|| isset( $_POST['_apop_tag_order'] )
|| isset( $_POST['_apop_tax_order'] ) ) {
check_admin_referer( 'sh_options' );
$settings = array(
'_apop_cat_order', //カテゴリー設定
'_apop_tag_order', //タグ設定
'_apop_tax_order', //カスタムタクソノミー設定
);
foreach ( $settings as $setting ) {
$opt = $_POST[ $setting ];
update_option( $setting, $opt );
}
require_once self::TEMPLATE_DIR . 'success.php';
}
require_once self::TEMPLATE_DIR . 'setting.php';
}
public function show_option_page() {
//カテゴリーの投稿表示順設定
if ( isset( $_POST['_apop_post_category'] ) ) {
check_admin_referer( 'sh_options' );
$this->update_post_sort( 'category' );
require_once self::TEMPLATE_DIR . 'success.php';
}
//タグの投稿表示順設定
if ( isset( $_POST['_apop_post_post_tag'] ) ) {
check_admin_referer( 'sh_options' );
$this->update_post_sort( 'post_tag' );
require_once self::TEMPLATE_DIR . 'success.php';
}
//カスタム分類の投稿表示順設定
if ( isset( $_POST['_apop_post_tax'] ) ) {
check_admin_referer( 'sh_options' );
$this->update_post_sort( 'tax' );
require_once self::TEMPLATE_DIR . 'success.php';
}
require_once self::TEMPLATE_DIR . 'order.php';
}
//投稿表示順の設定
private function update_post_sort( $target ) {
$target = '_apop_post_' . $target;
$posts_sort = $_POST[ $target ]['post_sort'];
foreach ( $posts_sort as $cat_id => $posts ) {
$sort_key = $target . '_' . $cat_id;
foreach ( $posts as $post_id => $sort ) {
update_post_meta( $post_id, $sort_key, $sort );
}
}
}
}
}