WordPressの管理画面に入れなくても設定を変える方法|サーバーのSSHからWP-CLIでテーマ有効化・投稿・設定値の変更まで行える範囲と、契約プランで先に確かめる条件
WordPressの管理画面に入れなくても設定を変える方法|サーバーのSSHからWP-CLIでテーマ有効化・投稿・設定値の変更まで行える範囲と、契約プランで先に確かめる条件
「前の制作会社から管理画面のパスワードを引き継げていない」「プラグインのエラーで管理画面が真っ白になった」。理由はさまざまでも、「設定を1か所変えたいだけなのに何もできない」という状態に行き着くのは同じです。
結論から書きます。サーバーにSSH(エスエスエイチ:サーバーへ安全に接続して文字でコマンドを打つ仕組み)で入れるなら、管理画面を通さずにWordPressを操作できます。 使うのはWP-CLI(ダブリューピー・シーエルアイ:WordPressをコマンドで操作する公式系のツール)です。テーマの有効化、記事の投稿・ゴミ箱への移動、サイトURLやパーマリンク(記事URLの形式)の変更、プラグインの入れ直しまで、管理画面でやることの大半はコマンドで代わりに実行できます。
ただし、使えるかどうかは契約しているサーバーのプランと設定で決まります。この記事では、共用レンタルサーバー上で美容室の店舗サイト20数件を実際にこの方法で運用している例をもとに、次の3点を整理します。
- 管理画面なしで、何がどこまでできるのか
- 使える条件(契約プラン・SSHの設定・WP-CLIの有無)の確かめ方
- 本番サイトで事故を起こさないための手順
管理画面を使わずに操作できる仕組み
WordPressの設定や記事は、サーバー上の「データベース」と「ファイル」に保存されています。管理画面は、それを画面で操作するための入口のひとつにすぎません。
WP-CLIは、サーバーの中からWordPress本体の仕組みを呼び出してデータベースとファイルを操作します。ログイン画面を通らないため、管理画面のユーザー名やパスワードを知らなくても動きます。 代わりに必要なのは、サーバーそのものに入る権限(SSHの鍵)です。
つまり「管理画面のパスワード」と「サーバーのSSH」は別の鍵です。逆に言えば、SSHの鍵はWordPressの最高権限と同じ強さを持つので、管理画面のパスワード以上に慎重に扱う必要があります(後述)。
実例:店舗サイト20数件をログイン情報なしで運用している
名古屋の美容サロンFCでは、各店舗のWordPressブログ20数件と、新しく立ち上げたサロンのサイトを、同じ共用レンタルサーバーのひとつのアカウント配下で管理しています。このサーバーはSSHが使え、WP-CLIがあらかじめ導入されていました(/usr/bin/wp として呼び出せる状態)。
この環境で、管理画面に一度もログインせずに次の作業を行っています。
新しいサロンサイトの初期設定
新規に立ち上げたサロンのブログでは、WordPressを入れた直後の初期設定をすべてWP-CLIで行いました。
| 項目 | 変更前 | 変更後 |
|---|---|---|
| サイトURL(siteurl・home) | http:// のまま |
https:// に統一 |
| パーマリンク | 日付入りの形式 | 投稿名のみ(/%postname%/) |
| 初期投稿「Hello world!」・サンプルページ | 公開 | ゴミ箱へ移動(完全削除はしない) |
| テーマ | 初期テーマ | 独自テーマをアップロードし有効化 |
コマンドにすると、たとえば次のような形です。
wp option update siteurl https://example.com/wp
wp option update home https://example.com/wp
wp rewrite structure '/%postname%/'
wp post delete 1 2
wp theme activate 独自テーマ名
wp post delete は、--force を付けない限り完全削除ではなくゴミ箱への移動になります。あとで戻せる状態を残すため、初期投稿も完全削除はしていません。
パーマリンクの変更は、記事が0件だから無コストでできた変更です。記事が溜まっている他のサロンサイトは日付入りのまま据え置いています。記事があるサイトで形式を変えると旧URLが404になり、転送設定まで含めた別の作業になります。
各店舗ブログへの記事投稿
店舗ブログの更新を仕組み化したときも、投稿経路はSSH+WP-CLIにしました。全店が同じサーバーにあるため、店舗ごとにアプリケーションパスワード(外部から投稿するための専用パスワード)を発行せずに済みます。
投稿はWP-CLIからWordPress標準の投稿関数を呼び、タイトルと本文を標準入力で渡す形です。最初は下書きで投入し、1件入ったことを確認してから公開まで進める設定に切り替えました。
プラグインが壊れてサイトが止まったときの入れ直し
管理画面に入れない状況で最も助かるのが、プラグインの不具合でサイトごと止まったときです。プラグインのファイルが一部欠けると、管理画面も含めてサイト全体が致命的エラー(画面が真っ白、または「重大なエラーがありました」)になります。この状態では管理画面からプラグインを入れ直すことができません。
WP-CLIなら、次のように同じバージョンを上書きで入れ直せます。
wp plugin install プラグイン名 --version=現在のバージョン --force --skip-plugins --skip-themes
ポイントは --skip-plugins --skip-themes です。これを付けると、WP-CLIは壊れたプラグインやテーマを読み込まずに起動するため、致命的エラーが出ているサイトでも作業ができます。 バージョンを現在と同じに指定するのは、入れ直しと同時に更新まで起きて表示が変わるのを避けるためです。
WP-CLIでできること・管理画面のほうが向いていること
できることの目安を整理します。
| 作業 | WP-CLIの主なコマンド | 補足 |
|---|---|---|
| テーマの有効化・切り替え | wp theme activate |
戻すときも同じコマンドで元のテーマ名を指定する |
| 記事の作成・更新・ゴミ箱移動 | wp post create / update / delete |
本文が長い場合はファイルや標準入力で渡す |
| サイトURL・各種設定値の変更 | wp option get / update |
変更前に get で現在値を控える |
| パーマリンク形式の変更 | wp rewrite structure |
記事があるサイトではURLが変わる点に注意 |
| プラグインの有効化・停止・入れ直し | wp plugin activate / deactivate / install |
壊れているときは --skip-plugins |
| ユーザーの追加・パスワード再設定 | wp user create / update |
引き継ぎ漏れの管理画面を取り戻す場合 |
| データベースのバックアップ | wp db export |
設定変更の前に必ず取る |
| バージョン確認 | wp core version |
表示上の数字より確実 |
一方、ページビルダー(ドラッグ操作でページを組み立てるプラグイン)の中身の編集や、画面を見ながら調整する作業は、管理画面のほうが確実です。ページビルダーの内容は独自の形式でデータベースに入っており、コマンドで直接書き換えると表示が崩れることがあります(詳しくは「WordPressの本文を直したのに表示が変わらないとき」)。WP-CLIは「管理画面を代わりに押す道具」ではなく、「設定値や記事を正確に書き換える道具」と考えると使いどころを間違えません。
使える条件:契約プランで先に確かめる4点
WP-CLIを使えるかどうかは、WordPressではなくサーバー側で決まります。作業に入る前に、次の4点を順に確かめます。
1. 契約プランでSSHが使えるか
共用レンタルサーバーでも、WordPress専用の簡易プランや最安プランではSSHが提供されていない場合があります。管理パネルの「SSH設定」の有無や、料金表の機能一覧で確認します。
2. SSHが「オン」になっていて、鍵が登録できるか
SSHは初期状態で無効のことが多く、管理パネルで有効にします。接続には鍵(公開鍵と秘密鍵の組み合わせ)を使います。
サーバー会社によっては管理パネル上で鍵の組み合わせを自動生成する機能もありますが、自動生成を選ぶとパスフレーズ(鍵を使うたびに入力する合言葉)が必須になる場合があります。人が手で操作するだけなら問題ありませんが、記事投稿などを自動化する予定があるなら、手元で作った公開鍵を管理パネルに登録する方式を選ぶほうが扱いやすくなります。
3. WP-CLIが入っているか、なければ自分で置けるか
SSHで入ったら wp --info を実行します。バージョンなどが表示されれば、そのまま使えます。サーバーによって導入済みのものは古い版のことがあり、実際に確認したサーバーでは導入済み版が2.8系でした。
入っていない場合や古すぎる場合は、公式配布のファイル(wp-cli.phar)を自分のホームディレクトリに置くだけで動きます。管理者権限は不要です。
4. コマンド用のPHPが新しいか
見落としやすいのがここです。サイトの表示に使われるPHPと、SSHで入ったときのPHPは別に設定されていることが多いため、「サイトは動いているのにWP-CLIが起動しない」ということが起こります。ある別のサーバーでは、SSH接続時の標準PHPが5.4系のままで、WP-CLIがそもそも起動しませんでした。この場合は、サーバーに入っている新しいPHPのフルパスを指定してWP-CLIを実行します。
WP-CLIやPHPの版が古いときに更新作業で起きる問題は、「WordPressの更新ボタンを押しても上がらないとき」でも触れています。
本番サイトで事故を起こさない手順
コマンドは確認画面を挟まずに即時反映されます。管理画面なら「本当に変更しますか」と出る操作も、そのまま実行されます。本番で使うときは次の順番を守ります。
手順1:変更前にデータベースを書き出す
wp db export 日付入りのファイル名.sql
書き出したファイルの末尾に「Dump completed」という行があれば、途中で切れずに最後まで書き出せています。設定変更の前は毎回これを取り、「戻せる状態」を作ってから作業します。
手順2:変える値の現在値を控える
wp option get siteurl のように今の値を先に表示して記録します。戻すときはその値で update し直すだけです。テーマも元の名前を控えれば同じコマンドで戻せます。
手順3:記事は下書きで入れて、件数を数えてから公開する
記事を投稿する処理を組む場合は、最初は下書き(--post_status=draft)で入れ、狙いどおりの件数・中身になったことを確かめてから公開に進みます。
落とし穴がひとつあります。wp post list --name=スラッグ は下書きの記事に一致しないことがあります。 「同じスラッグがあれば更新、なければ新規作成」をこの検索だけで組むと、下書きを見つけられずに毎回新規作成し、同じ記事が何件も重複します。既存記事の判定は、全件取得してからプログラム側で照合するほうが確実です。
手順4:--skip-plugins の副作用を知っておく
壊れたサイトの復旧で役立つ --skip-plugins ですが、普段の投稿処理に付けっぱなしにすると、プラグインが保存時に行う処理(SEOプラグインのメタ情報生成など)も動きません。付けるのは、プラグインのエラーでWP-CLIが起動しないサイトに限るのが原則です。実際、20数店のうち1店だけ、口コミ表示系のプラグインがWP-CLI上でエラーを出したため、そのサイトに限って付けています。
手順5:変えたら画面で確かめる
コマンドが成功しても、表示が変わったとは限りません。サーバーのページキャッシュ(表示高速化のための保存)が有効だと、古い画面がしばらく配信されることがあります。変更後は実際のページを開き、必要ならキャッシュを消して確認します。
SSHの鍵は管理画面のパスワード以上に大事に扱う
冒頭で書いたとおり、SSHで入れる人はWordPressのすべてを操作できます。管理画面の権限設定(編集者・投稿者など)も関係ありません。運用するなら、次の点を決めておきます。
- 秘密鍵は作業するパソコンの外に出さない。メールやチャットで送らない
- 外注先に作業を頼む場合は、専用の鍵を登録してもらい、終わったら管理パネルから削除する
- 自動化の仕組みに鍵を置く場合は、そのサーバー専用の鍵にする
逆に、SSHで作業できれば管理画面のパスワードを持たない運用も選べます。自社サービスのブログでは記事の投入をSSH経由に限り、管理画面のパスワードは作業側で使わず保存もしていません。受け渡しが減るほど流出の経路も減ります。
制作会社に任せている場合に確認すること
自社でコマンドを打たなくても、次の3点を把握しておくと復旧が早くなります。
- サーバーの契約者は誰で、管理パネルに自社でログインできるか
- 契約中のプランでSSHは使えるか
- 管理画面のログイン情報とは別に、サーバー側から操作できる担当者は誰か
特に1が重要です。管理パネルに自社で入れれば、SSHの有効化も鍵の登録も自社で行え、管理画面のパスワードが分からなくても最終的にはここから取り戻せます。
REST API(外部から記事を投稿する仕組み)でのつまずきは「WordPressのアプリケーションパスワードで401になる原因」「WordPressのREST APIが突然404になるとき」で整理しています。
まとめ
- WordPressの管理画面に入れなくても、サーバーにSSHで入れればWP-CLIでテーマ有効化・記事投稿・設定値の変更・プラグインの入れ直しまでできる
- 管理画面のパスワードとサーバーのSSHは別の鍵。SSHの鍵はWordPressの最高権限と同じ強さなので厳重に扱う
- 使える条件はサーバー側で決まる。プランのSSH対応、SSHの有効化と鍵の登録方式、WP-CLIの有無、コマンド用PHPの版の4点を先に確かめる
- 本番ではデータベースの書き出し→現在値の控え→下書きで投入→画面で確認、の順を守る。
--skip-pluginsは壊れたサイトの復旧用と割り切る - ページビルダーの中身の編集など、画面で調整する作業は管理画面のほうが向いている
「管理画面のパスワードが分からない」「プラグインのエラーでサイトごと止まった」といった状況でも、サーバー側から手を入れられるケースは多くあります。サーバーの条件確認や復旧、店舗ブログの運用の仕組み化についてのご相談は、graciautoまでお気軽にお問い合わせください。