ご利用のブラウザは安全ではありません

ご利用の Internet Explorer は古いブラウザで Microsoft社も利用は危険であると発信しています。このウェブサイトも Internet Explorer での表示は保証しておりません。

最新のモダンブラウザ(Microsoft EdgeGoogle Chromeなど)をお使いください。

もし Edge をご利用中でもこのメッセージが表示される場合は IE モードになっていないか確認してください。

ダッシュボードにテストサイトでのみ実行するボタンを追加する方法

,

ダッシュボードにテストサイトでのみ実行するボタンを追加する方法

「 All-in-One WP Migration 」で本番環境 から テスト環境にデータを取り込む際、データの読み込み後に毎回オプションやプラグインのオフ・オンを行なっていたため、ダッシュボードからまとめて実行出来る方法を考えてみました。

ドメインで判定する

functions.php に記述するコードは以下のような感じです。

/*-------------------------------------------*/
/* テスト環境でのみ表示されるボタンを追加
/*-------------------------------------------*/
function etbs_custom_dashboard_widget() {
	wp_add_dashboard_widget(
		'custom_button_widget', // ウィジェットID
		'本番 -> デモ 取込後に実行する処理', // タイトル
		'etbs_custom_button_widget_display'
	);
}
add_action('wp_dashboard_setup', 'etbs_custom_dashboard_widget');

function etbs_custom_button_widget_display() {
	$current_url = $_SERVER['HTTP_HOST'];
	if (strpos($current_url, 'www.sample.jp(ココに本番環境のドメインを指定)') !== false) {
		?>
		<input type="submit" class="button button-primary" value="実行する"  disabled>
		<?php
	} else {
		?>
		<form method="post">
			<input type="hidden" name="custom_button_action" value="run_action">
			<input type="submit" class="button button-primary" value="実行する">
		</form>
		<?php
	}
}

実際の設定例

例として、「 検索エンジンからのインデックスを防ぐ 」、「 プラグインの有効化・無効化 」などを実行します。
functions.php に記述するコードは以下のような感じです。

/*-------------------------------------------*/
/* テスト環境でのみ表示されるボタンを追加
/*-------------------------------------------*/
function etbs_custom_dashboard_widget() {
	wp_add_dashboard_widget(
		'custom_button_widget', // ウィジェットID
		'本番 -> デモ 取込後に実行する処理', // タイトル
		'etbs_custom_button_widget_display'
	);
}
add_action('wp_dashboard_setup', 'etbs_custom_dashboard_widget');

function etbs_custom_button_widget_display() {
	$current_url = $_SERVER['HTTP_HOST'];
	if (strpos($current_url, 'www.sample.jp(ココに本番環境のドメインを指定)') !== false) {
		?>
		<input type="submit" class="button button-primary" value="実行する"  disabled>
		<?php
	} else {
		?>
		<form method="post">
			<input type="hidden" name="custom_button_action" value="run_action">
			<input type="submit" class="button button-primary" value="実行する">
		</form>
		<?php
	}
}

function handle_custom_button_action() {
	if (isset($_POST['custom_button_action']) && $_POST['custom_button_action'] === 'run_action') {
		// ここに実行したい処理を書く
		update_option('blog_public', '0'); // (例)検索エンジンからのインデックスを防ぐ
		update_option('_eb_testmode', '1'); // (例)テストモードを有効にする
		activate_plugin( '(プラグインフォルダ/プラグインファイル).php' ); // (例)プラグインを有効にする
		deactivate_plugins( '(プラグインフォルダ/プラグインファイル).php' ); // (例)プラグインを無効にする
		// 管理画面に通知を表示
		add_action('admin_notices', function () {
			echo '<div class="notice notice-success is-dismissible"><p>処理が実行されました!</p></div>';
		});
	}
}

// ボタンが押されたときの処理
add_action('admin_init', 'handle_custom_button_action');

//(例)テストモードが有効な場合、予約投稿を公開状態に変更
function stop_post_status_future_func( $data, $postarr ) {
	$chk = get_option('_eb_testmode');
	if ( $chk == 1 ) { 
		if ( ( $data['post_type'] == '(ココにカスタム投稿を指定)' || $data['post_type'] == 'post' ) && $data['post_status'] == 'future' ) {
			$data['post_status'] = 'publish';
		}
	}
	return $data;
};
add_filter( 'wp_insert_post_data', 'stop_post_status_future_func', 10, 2 );

「 All-in-One WP Migration 」を使ってて、同じような悩みがありましたら試してみてください(^^)。
オンラインでのサポートもお受けしていますので気軽にご相談ください。

自己紹介

松田 大と申しますm(_ _)m
インディーズでミュージシャンをやっていたのですがいつのまにか…

とある企業でショップのアルバイトスタッフから正社員、支店長を経てシステム部門に異動するという、開発担当としては変わった経緯を持っている方だと思います。

「Excel VBA」からスタートして、Yamaha RTX シリーズで VPN環境構築、Hyper-V環境構築、Windowsアプリ開発などを経験した後、「 WordPress 」に出会い、どっぷりハマっています。

現在勤めているETBS合同会社では、「 WordPress 」を活用したWEBサイト、業務用WEBアプリケーション開発を中心に、記事の執筆代行や掲載に必要な情報のリサーチ、映像のテロップ入れや切りはりなどの簡単な動画編集なども、まとめて行なっています。

宮崎県 都城市 出身。東京都 葛飾区 在住。現在、代表兼二児のパパ。子育てを通じて、こどもたちにもプログラミングの楽しさに触れてほしいと思うようになり、「 こどもICTかつしか教室 」を開講中。最近は童心に帰り、簡単なゲーム制作なんかも楽しんでいます(^_^)。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ビジュアルプログラミング オンライン無料体験レッスン モニター大募集
こどもICTかつしか教室 | 幼稚園年長 小学生 中学生 スクラッチ ビジュアルプログラミング
WordPress で困ったら? | 必要なときに必要な分だけ、お助けサポート
WordPress / PHP なんでも相談OK