WordPressプラグインがインストールできない時の対処法

Conoha VPSにインストールしたWordPressにGoogleAnalyticsを導入しようとしたところ、

  • Twenty Twenty-Twoテンプレートにheader.phpが存在しない
  • WordPressにPluginをインストールできない

の2点の対応方法をメモしておく。

Twenty Twenty-Twoテンプレートにheader.phpが存在しない

Twenty Twenty-Twoのようなブロックテンプレートには旧来のheader.phpは存在しないために、GoogleAnalyticsのコードが埋め込めない。「Head, Footer and Post Injections」というプラグインを導入することで、その名の通りhead要素にカスタムコードをインジェクションできるようになる。

参考記事:Twenty Twenty Two (WPブロックテーマ)でGAやGTMのタグを設置する – Soft Machine – ウェブエンジニア開発メモ

WordPressにPluginをインストールできない

症状としては、WordPress管理画面からプラグインの追加や更新をしようとするとFTP接続情報を聞かれる。エラーメッセージは「To perform the requested action, WordPress needs to access your web server. Please enter your FTP credentials to proceed. If you do not remember your credentials, you should contact your web host.」こちらの記事で書かれているのと同じ症状である。
当方が不勉強なこともあるが、VPSの設定をパスワードログインなしの鍵認証のみでの接続設定にしているため、FTPやSFTPによる接続はできないのではないかと考えているので困っていた。

この症状に対しては、ディレクトリのパーミッション変更で、所有者とグループをwww-dataにすれば解決した。

chown -R www-data:www-data your-wordpress-directory

付記ではあるが自分が辿った経緯をメモしておく。
この解決法に至るまでに、wp-config.phpの末尾にdefine(‘FS_METHOD’, ‘direct’);を追記することで、FTP接続情報を聞かれなくすることができたが、その次の段階であるプラグインインストール中に「wordpress plugin Installation failed: Could not create directory.(インストールに失敗しました: ディレクトリを作成できませんでした。)」とエラーになってインストールに失敗した。pluginsディレクトリのパーミッションを一時的に777にしてもダメだったので途方に暮れかけたところで、前述のように所有者をwww-dataに変更することでエラーは出なくなった。その後、FS_METHOD記述を削除してもプラグインインストールは可能だったので、今回の症状に対しては所有者変更のみで解決できると判断した。

全て期待値通りに動くようになったので、セキュリティ強化のためにWordPress全体のパーミッションを見直して(参考記事)ひとまずの作業を終了しました。