ワードプレスを管理するためのWP-CLIを導入する

4月 14, 2024

WordPressを管理するためのコマンドラインインターフェースのWP-CLIをインストールします。理由はデータベースの文字列を置換したいという事態に直面したからです。

WP-CLIとは、WordPressをコマンドラインから操作できる超便利なツールです。このツールは、WordPressサイトの管理を自動化したり、管理画面を使わずに迅速に作業を行うために非常に便利です。開発者やシステム管理者が、プログラミングやスクリプトを通じて効率的に多くの操作を行うことができます。

WP-CLIの主な機能と利点

  1. サイト管理:
    • WordPressのインストール、更新、マルチサイトの設定などをコマンドラインから直接実行できます。
  2. プラグインとテーマ:
    • プラグインやテーマのインストール、更新、有効化、無効化をコマンド一つで行えます。これにより、複数のサイトを運用している場合でも作業が大幅に簡略化されます。
  3. データベース操作:
    • データベースのバックアップや復元、データの検索置換(例えば、ドメイン名の変更時など)を簡単に行うことができます。
  4. 投稿とユーザー管理:
    • 投稿の作成、編集、削除や、ユーザーの追加、削除、ロールの変更などがコマンド一つで可能です。
  5. 開発支援:
    • デバッグ情報の取得や、コードのスニペットの実行など、開発中のトラブルシューティングが簡単にできます。
  6. スケジュールされたイベント:
    • WordPressのクロンジョブを管理し、スケジュールされたイベントの一覧表示、実行、削除がコマンドラインから行えます。


これを可能にするプラグインやツールもありますが、Linux自体を扱っている人はこちらのコマンドラインインターフェースがおすすめです。SQLの構文を使用する方法もありますが、知識がないと困難です。
公式サイトに導入方法が記載されているので、それをコピペするだけです。

https://wp-cli.org/ja/

必要なファイルをダウンロードして、動作確認します。

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info

ファイルに実行権限を付与して、パスが通っているディレクトリにファイルを移動します。
どのディレクトリにいてもコマンドが正常に動作するようにそうします。

chmod +x wp-cli.phar
mv wp-cli.phar /usr/local/bin/wp

WP-CLIの情報と、アップデートがあるか確認します。

wp --info
wp cli update

せっかくなのでワードプレスの置換のテストをします。dry-runを付けると実際には置換せずテストができます。その際、ワードプレスのインストールディレクトリに移動しておきます。

cd /usr/share/nginx/html/example.com/
wp search-replace --dry-run '.life' '.com'
[root@ip-172-31-15-164 example.com]# wp search-replace  --dry-run '.life' '.com'
PHP Warning:  Undefined variable $wp_embed in /usr/share/nginx/html/example.com/wp-content/themes/cocoon-master/lib/settings.php on line 372
Warning: Undefined variable $wp_embed in /usr/share/nginx/html/example.com/wp-content/themes/cocoon-master/lib/settings.php on line 372
+----------------------------+-----------------------+--------------+------+
| Table                      | Column                | Replacements | Type |
+----------------------------+-----------------------+--------------+------+
| wp_actionscheduler_actions | hook                  | 0            | SQL  |
| wp_actionscheduler_actions | status                | 0            | SQL  |
| wp_actionscheduler_actions | args                  | 0            | SQL  |
| wp_actionscheduler_actions | schedule              | 0            | PHP  |
| wp_actionscheduler_actions | extended_args         | 0            | SQL  |
| wp_actionscheduler_groups  | slug                  | 0            | SQL  |
| wp_actionscheduler_logs    | message               | 0            | SQL  |
| wp_commentmeta             | meta_key              | 0            | SQL  |
| wp_commentmeta             | meta_value            | 0            | SQL  |
| wp_comments                | comment_author        | 0            | SQL  |
| wp_comments                | comment_author_email  | 0            | SQL  |
| wp_comments                | comment_author_url    | 0            | SQL  |
| wp_comments                | comment_author_IP     | 0            | SQL  |
| wp_comments                | comment_content       | 0            | SQL  |
| wp_comments                | comment_approved      | 0            | SQL  |
| wp_comments                | comment_agent         | 0            | SQL  |
| wp_comments                | comment_type          | 0            | SQL  |
| wp_links                   | link_url              | 0            | SQL  |
| wp_links                   | link_name             | 0            | SQL  |
| wp_links                   | link_image            | 0            | SQL  |
| wp_links                   | link_target           | 0            | SQL  |
| wp_links                   | link_description      | 0            | SQL  |
| wp_links                   | link_visible          | 0            | SQL  |
| wp_links                   | link_rel              | 0            | SQL  |
| wp_links                   | link_notes            | 0            | SQL  |
| wp_links                   | link_rss              | 0            | SQL  |
| wp_options                 | option_name           | 0            | SQL  |
| wp_options                 | option_value          | 6            | PHP  |
| wp_options                 | autoload              | 0            | SQL  |
| wp_postmeta                | meta_key              | 0            | SQL  |
| wp_postmeta                | meta_value            | 2            | PHP  |
| wp_posts                   | post_content          | 65           | SQL  |
| wp_posts                   | post_title            | 0            | SQL  |
| wp_posts                   | post_excerpt          | 0            | SQL  |
| wp_posts                   | post_status           | 0            | SQL  |
| wp_posts                   | comment_status        | 0            | SQL  |
| wp_posts                   | ping_status           | 0            | SQL  |
| wp_posts                   | post_password         | 0            | SQL  |
| wp_posts                   | post_name             | 0            | SQL  |
| wp_posts                   | to_ping               | 0            | SQL  |
| wp_posts                   | pinged                | 0            | SQL  |
| wp_posts                   | post_content_filtered | 0            | SQL  |
| wp_posts                   | guid                  | 54924        | SQL  |
| wp_posts                   | post_type             | 0            | SQL  |
| wp_posts                   | post_mime_type        | 0            | SQL  |
| wp_term_taxonomy           | taxonomy              | 0            | SQL  |
| wp_term_taxonomy           | description           | 0            | SQL  |
| wp_termmeta                | meta_key              | 0            | SQL  |
| wp_termmeta                | meta_value            | 0            | SQL  |
| wp_terms                   | name                  | 0            | SQL  |
| wp_terms                   | slug                  | 0            | SQL  |
| wp_usermeta                | meta_key              | 0            | SQL  |
| wp_usermeta                | meta_value            | 0            | PHP  |
| wp_users                   | user_login            | 0            | SQL  |
| wp_users                   | user_nicename         | 0            | SQL  |
| wp_users                   | user_email            | 0            | SQL  |
| wp_users                   | user_url              | 1            | SQL  |
| wp_users                   | user_activation_key   | 0            | SQL  |
| wp_users                   | display_name          | 0            | SQL  |
+----------------------------+-----------------------+--------------+------+
Success: 54998 replacements to be made.

データベースが大きく、URLの置換の際プラグインなのでは動作が途中で止まりましたが、こちらは問題なく意図したことができました。

教育

Posted by admin