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

/***** 影響の出るプラグイン等を除外しつつRest apiの使用を無効にする *****/
/* 20240126 Download Monitorの除外テスト中 */
/* ユーザー定義 */
function haup_deny_restapi_except_plugins( $result, $wp_rest_server, $request ){
	$namespaces = $request->get_route();

// --- 1. 標準的な許可リスト（ここは基本セット） ---
	$allowed_routes = array(
		'oembed/',              // 外部埋め込み（YouTubeなど）
		'jetpack/',             // Jetpack連携
		'contact-form-7/',      // お問い合わせフォーム
		'redirection/',         // リダイレクト管理
		'content-protector/',   // Passster等
		'wp/v2/dlm_download',   // Download Manager
		'haup/v1',  // ★グループ クリック計測
		'akismet/v1',           // Akismet
		'google-site-kit/v1',   //Google Sitekit 
	);

	// --- 2. 独自のフィルターフックを設置 ---
	// 他の場所から add_filter( 'haup_allowed_rest_routes', ... ) で追加可能にする
	$allowed_routes = apply_filters( 'haup_allowed_rest_routes_filter', $allowed_routes );

	// ルート判定
	foreach ( $allowed_routes as $route ) {
		if ( strpos( $namespaces, $route ) === 1 ) {
			return $result;
		}
	}

	//寄稿者権限以上の場合はオフ（新エディタ対策）
	if ( current_user_can( 'edit_posts' ) ) {
		return $result;
	}

	// 同一ホストからのアクセスを許可
	$server_ip = '';
	$client_ip =  '';

	if(isset( $_SERVER['SERVER_ADDR'] )){
		$server_ip = sanitize_text_field(wp_unslash($_SERVER['SERVER_ADDR']));
	}

	if(isset( $_SERVER['REMOTE_ADDR'] )){
		$client_ip = sanitize_text_field(wp_unslash($_SERVER['REMOTE_ADDR']));
	}

	//$server_ip = sanitize_text_field(wp_unslash($_SERVER['SERVER_ADDR'])); // サーバーのIPアドレス
	//$client_ip = sanitize_text_field(wp_unslash($_SERVER['REMOTE_ADDR']));

	if ( $client_ip === $server_ip ) {
		return $result;
	}



	//特定のグローバルIPを持つサーバーからのアクセスを許可
	//$allowed_ips = array( '111.111.111.111', '222.222.222.222' ); // 許可するIPアドレスのリスト
	//$client_ip = $_SERVER['REMOTE_ADDR'];
	//if ( in_array( $client_ip, $allowed_ips ) ) {
		//return $result; // 許可されたIPアドレスからのアクセスは許可
	//}

	return new WP_Error( 'rest_disabled', 'The REST API on this site has been disabled.', array( 'status' => rest_authorization_required_code() ) );
}
add_filter( 'rest_pre_dispatch', 'haup_deny_restapi_except_plugins', 10, 3 );

/*
function haup_add_rest_route( $allowed_routes ){

	// 配列の定義は ( ) または [ ] を使います
	$additional_routes = array(
		// 'my-plugin/v1/', // 例：別のプラグイン
		// ここにコンマ区切りで許可するルートを書く
	);

	// 既存のリストに新しいリストを合体させて返す
	return array_merge( $allowed_routes, $additional_routes );
}
add_filter('haup_allowed_rest_routes_filter', 'haup_add_rest_route');
*/