てっきんの具。

「てっきん」と呼ばれて40年のおっさんが書くブログ

WordPressのテーマを強制的にデフォルトに戻す方法

[2015.9.16追記]
久しぶりにこのスクリプトを使う事案が起きたので、最新のデフォルトテーマ(Twenty Fifteen)で試したところうまくいきました。

[2012.10.22追記]
WordPressの関数 update_option() を使う、よりすっきりしたコードを追記しました

[2012.10.29追記]
「WordPressアドレス(URL)」と 「サイトアドレス (URL)」をデフォルトに戻す方法もまとめました。

テーマをいろいろ切り替えて遊んでいるうち、うっかりバギーなテーマを掴んでどうにもならなくなったときにデフォルト(記事執筆時点では『Twenty Eleven』)に戻すスクリプトを紹介します。当初は、データベースを直接操作する方法を載せようと思ったのですが、汎用性を高めるためにPHPスクリプトにしてしまいました。

以下のスクリプトを reset.php の名前で保存して(もちろん文字コードはUTF-8ね)インストールディレクトリ(wp-config.php と同じ階層)にアップロードしましょう。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>テーマをデフォルトに戻すよ</title>
</head>

<body>
<p>
<?php
$dir = dirname( __FILE__ ) . '/';

if ( file_exists( $dir . 'wp-config.php' ) ) {
	require_once( $dir . 'wp-config.php' );
}
else {
	die( '同じディレクトリに wp-config.php が存在しません。' );
}

$connect = mysql_connect( DB_HOST, DB_USER, DB_PASSWORD );
mysql_select_db( DB_NAME, $connect );
mysql_query( 'UPDATE `' . $table_prefix . 'options` SET `option_value` = "Twenty Eleven" WHERE `option_name` = "current_theme"', $connect );
mysql_query( 'UPDATE `' . $table_prefix . 'options` SET `option_value` = "twentyeleven" WHERE `option_name` = "template"', $connect );
mysql_query( 'UPDATE `' . $table_prefix . 'options` SET `option_value` = "twentyeleven" WHERE `option_name` = "stylesheet"', $connect );
mysql_close( $connect );

echo 'テーマをデフォルトに戻しました。';
?>
</p>
</body>
</html>

アップの後 WordPressアドレス/reset.php にアクセスして「テーマをデフォルトに戻しました。」のメッセージが出ればオッケイです 🙂

[2012.10.22追記]
PHPの mysql_connect() でなくWordPressの update_option() 関数を使うとコードがよりすっきり(することが今さらながらわかりました)。wp-content/themes/foo 内のテンプレートファイルでなくてもあらかじめ wp-load.php を読み込むことでWordPressの関数を使えますよ。

……ということですっきり版のコード。
({default theme name} はデフォルトテーマ名〔例:Twenty Eleven〕 {default theme directory name} はデフォルトテーマのディレクトリ名〔例:twentyeleven〕に読み替えてください)

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>テーマをデフォルトに戻すよ</title>
</head>

<body>
<p>
<?php
$dir = dirname( __FILE__ ) . '/';

if ( file_exists( $dir . 'wp-load.php' ) ) {
	require_once( $dir . 'wp-load.php' );
}
else {
	die( '同じディレクトリに wp-load.php が存在しません。' );
}

update_option( 'current_theme', '{default theme name}' );
update_option( 'template', '{default theme directory name}' );
update_option( 'stylesheet', '{default theme directory name}' );

echo 'テーマをデフォルトに戻しました。';
?>
</p>
</body>
</html>

カテゴリー:

タグ:

tecking へ返信する コメントをキャンセル

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください