マルチサイトの設定を一括で変更するスクリプト

必要に迫られて、つい。。

注意事項とか利用方法とか

  • wp-load.php へのパスは、環境によって合わせてください。
  • $update_options の配列に、オプション名をキーに、設定したい内容を値として記述してください。
  • 値をnull で指定すると、設定を削除できます。
  • 元に戻すことはできませんので、実行前にoptionsテーブルのバックアップをとってからにしましょう。
<?php
$update_options = array(
	'option_name_1' => 'option_value 1',
	'option_name_2' => 'option_value 2',
	'option_name_3' => 'option_value 3',
	'delete_option_name_1' => null,
	'delete_option_name_2' => null,
);

require_once( 'path-to-wp-root/wp-load.php' );

$blogs = $wpdb->get_col( $wpdb->prepare( "SELECT blog_id FROM $wpdb->blogs WHERE site_id = %d ORDER BY registered DESC", $wpdb->siteid ) );

if ( $blogs ) {
	foreach ( $blogs as $blog ) {
		switch_to_blog( $blog );
		echo "\n" . get_bloginfo( 'name' ) . "\n";
		foreach( $update_options as $option_name => $option_value ) {
			if ( is_null( $option_value ) ) {
				$ret = delete_option( $option_name );
				if ( ! $ret ) {
					echo $option_name . " が削除されませんでした。\n";
				} 
			} else {
				$option_value = maybe_unserialize( $option_value );
				$ret = update_option( $option_name, $option_value );
				if ( ! $ret ) {
					echo $option_name . " が更新されませんでした。\n";
				} 
			}
		}
		restore_current_blog();
	}
}

「マルチサイトの設定を一括で変更するスクリプト」への2件のフィードバック

コメントを残す

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