<?php if ( !defined( 'ABSPATH' ) ) exit;//PHPの宣言と直接アクセスの拒否

/***** 管理画面の一覧を更新日順に表示 *****/
function haup_custom_order_posts_by_modified_date( $query ) {
	if ( is_admin() && $query->is_main_query() ) {
		// デフォルトの投稿タイプを設定（カンマ区切りの文字列）
		$posttypes = 'post,page';
        
		// フィルターを適用して投稿タイプを再指定できるようにする
		$posttypes = apply_filters( 'haup_admin_postlist_order_filter', $posttypes );

		//20250902 explodeだけでは空文字などがあった場合に不具合が出る可能性があるので修正
		$post_types_array = array_map('trim', explode(',', $posttypes));
		$post_types_array = array_filter($post_types_array);
		//$post_types_array = explode(',', $posttypes);//「,」で投稿タイプを分割

		// 現在の投稿タイプが指定された投稿タイプに含まれている場合
		if ( in_array( $query->get('post_type'), $post_types_array ) ) {
			$query->set( 'orderby', 'modified' );
			$query->set( 'order', 'DESC' );
		}
	}
}
add_action( 'pre_get_posts', 'haup_custom_order_posts_by_modified_date' );

/***** この機能が有効になっている場合に、並び替えができないことを一覧上部に通知する *****/
function haup_display_sort_lock_notice() {
	global $pagenow;

	// 投稿一覧ページ（edit.php）のみを対象とする
	if ( 'edit.php' !== $pagenow ) {
		return;
	}

	// メッセージを表示する投稿タイプを限定する
	$post_types_to_check = get_post_types_by_support(array('title', 'editor', 'thumbnail'));

	foreach ( $post_types_to_check as $post_type_key => $post_type ) {
		if ( !is_post_type_viewable($post_type) ) {
			unset($post_types_to_check[$post_type_key]);
		}
	}
    
	// 現在の投稿タイプが、対象の投稿タイプに含まれているかチェック
	$current_post_type = get_current_screen()->post_type;

	$option_array = get_option('hautility-option-03-utility');
	$list_control_value = isset($option_array['admin-list-asc-moddate']) ? $option_array['admin-list-asc-moddate'] : '';

	// 投稿タイプが一致し、かつオプションの値が'1'の場合にメッセージを表示
	if ( in_array($current_post_type, $post_types_to_check) && '1' === $list_control_value ) {

		// 設定画面へのURLを動的に生成
		$setting_url = add_query_arg( array(
			'page' => 'haumenu_page_utility',
			'tab'  => 'tabs_03',
		), admin_url('admin.php') );

		//文字列を変数化
		$text_1 = __('Currently, the "List updated date display" function of the Hima Art Utiliti plugin is enabled, so sorting by other elements is not possible.','hima-art-utility');
		$text_2 = __('To enable sorting, click the "Go to Settings" button and disable "Display list by update date"','hima-art-utility');
		$text_btn = __('Go to Settings','hima-art-utility');

		echo '<div class="notice notice-warning is-dismissible">';
		echo  '<p>';
		echo esc_html($text_1);
		echo  '<br>';
		echo  esc_html($text_2);
		echo  '<a href="';
		echo esc_url($setting_url) . '" class="haup-dashboard-widget-button" style="margin-left: 10px;color:#fff!important">';
		echo esc_html($text_btn);
		echo '</a>';
		echo  '</p>';
		echo  '</div>';

	}
}
add_action( 'admin_notices', 'haup_display_sort_lock_notice' );

/* フィルターフックで投稿タイプを再指定する */
/*
function my_custom_post_types( $posttypes) {
	// カスタム投稿タイプを追加（カンマ区切りの文字列）
	$posttypes = 'post,page';
	return $posttypes;
}
add_filter( 'haup_admin_postlist_order_filter', 'my_custom_post_types' );
*/