[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>
いろいろありがとうございました。
phpMyAdminを使って直接書き込みをし、解決いたしました。
これで、今後新しいテーマでエラーになっても大丈夫です。
本当にありがとうございました。
たびたび恐れ入ります。
2つ目のスクリプトでいろいろやった結果、スクリプトでのsyntax error は無くなりましたが、デフォルトのテーマに戻らず変更に失敗したテーマのエラーが表示されています。
ドキュメントルートと同じエラーです。
スクリプトでうまくいかない原因がつかみかねるのですが、phpMyAdminなどを介してデータベースに直接アクセスできるなら、当該WordPressが使っているデータベースの wp_options テーブルを開いていただき
current_theme … Twenty Seventeen (空白にご注意)
template … twentyseventeen
stylesheet … twentyseventeen
と直接書き込まれた方がよいかもしれないですね。
お返事ありがとうございます。
いろいろやっていましたら、今度は以下のエラーに変わりました。
Parse error: syntax error, unexpected T_STRING in /home/******/public_html/******.com/reset.php on line 17
最初はこちらのサイトのものをコピーペーストして使わせて頂いたら13行目でのsyntaxエラーだったのですが、phpのところを打ち直しましたら17行目でのエラーになりました。
記述のミスも何度も見直しているのですが、発見出来ません。
始めまして。山本と申します。php全くわからずの素人です。教えてください。
2つとも試して見たのですが、どちらも13行目でsyntax errorとなります。
Wordpressのバージョンは4.7.2です。
よろしくお願いいたします。
山本さん
記事、ご覧くださりありがとうございます。
WordPress 4.7.2 を PHP 7.0.7 環境のレンタルサーバで後の方のスクリプトを試してみたところ問題なく動きました。
13行目での Syntax Error とのことですが、if 文の開き/閉じカッコの数などは一致してますでしょうか?