ラベル WordPress Meetup の投稿を表示しています。 すべての投稿を表示
ラベル WordPress Meetup の投稿を表示しています。 すべての投稿を表示

2024年4月13日土曜日

「Okayama WordPress Meetup #9 | プラグインアップデートを学ぼう」に参加して #wordpress #okayamawpmeetup

私にとって WordPress Meetup への参加について、東京の次に遠い場所となる岡山県にやってきました。岡山県といえば、2019年に別のイベントで訪れて以降、2度目になります。

今回は懇親会も参加する日帰りということもあり、観光できる時間は岡山駅に到着する11時半から、Meetup が始まる13時半までの最長2時間。あちらこちらいくには少し時間が心もとないため、昼食に「デミカツ丼」を食べることを主軸に考えました。観光については一番最後に紹介します。


プログラム



自己紹介



オーガナイザーのお一人から Meetup に関する説明。
その後、参加メンバーの自己紹介タイムとなった。20名弱参加と部屋がいっぱいになるぐらい参加していました。台湾から参加された方もいたのに驚きました。久しぶりにあった方もいて楽しかったです。

以下、筆者が発表者からきいた内容の備忘録です。したがって必ずしも筆者の意図した通りの内容になっているかどうかの保証はありません。
筆者のコメントは、 先頭に # をつけています。

プラグインアップデートの仕組み(假谷さん)



発表資料(Googleスライド)

プラグインについて自動更新が無効状態なのに、更新されているという現象が発生。なぜか、そのことを調べてみたことを発表してみたい。
過去にも Ninja Forms Contact Form(2022年6月) や Loginizer(2020年10月) で強制アップデートはあったらしい。

アップデートの概要(コア、テーア、プラグイン、翻訳がある)

バージョンチェックと処理の流れを知るには、 wp_cron について知る必要あり。

WP Control というプラグインをインストールすると、ツール > Cronイベントから WordPress の Cron がどのように動いたのかをチェックしたり、設定できる。

# 以下、筆者のローカル環境でインストールしてみたときのスクリーンショット




取得したデータは、transient と呼ばれる内部キャッシュに保存される。
wp_optionsの _site_transient_update_plugins に保存される。
更新頻度は12時間ごと。

開発元が公式リポジトリに反映させても、WordPress側ではまだ見えていない可能性がある(12時間に1度の更新頻度からか)

即時反映させるための対処方法としては、ダッシュボードの更新にある「確認してください」をクリックすると更新されるようだ。


#上記は筆者のローカル環境。そういえば最近更新していないので WordPress のバージョンがちょい古ですね (^^;

wp_maybe_auto_update 関数などを使えば、強制アップデートをかけることができるのでは?

AUTOMATIC_UPDATER_DISABLED 定数で全自動更新を無効化できる。
wp_config.php に
define('AUTOMATIC_UPDATER_DISABLED', true);
として追加する。

あるいはフックで追加することも可能

UpdateURI の仕組みが WordPress 5.8 で導入された。これは、プラグイン側の情報に、ダウンロードする場所を指定するための機能があるということ。たとえば GitHUBからプラグインをダウンロードなどできるようだ。

公式リポジトリに公開しないようなプラグインや、公式プラグインをやめてしまって他の人が同名のプラグインで作成しても勝手に置き換わるようなことがなくなるメリットもあるようだ。
もちろんデメリットとしては更新の仕組みは自前で用意する必要がある。

# Introducing “Update URI” plugin header in WordPress 5.8 – Make WordPress Core

WordPress 6.5 より、Requires Plugins を定義することで、プラグインの依存関係の設定ができるようになった。
# Contact Form 7 がある前提で、そのプラグインを拡張するプラグインをつくるときに必要なのでありがたいですね!

# 参考:Introducing Plugin Dependencies in WordPress 6.5 – Make WordPress Core

こちらを設定していると、依存関係のあるプラグインが無効化できなくなる模様。
#つまりは、
プラグインA
 ┗ 依存プラグイン B
の場合、依存プラグインのほうで Requires Plugins として プラグインAを設定していた場合、依存プラグイン Bを無効化してからでなければ、プラグインAが無効化できないということか。
また、依存プラグイン Bは、プラグインAをインストールしていないと、インストールできないというメッセージがでてくるのではないかと推測(未検証ということ)。

質疑応答


質問)過去にも Ninja Forms Contact Form(2022年6月)Loginizer(2020年10月) で強制アップデートはあったらしいと話されていたのが、結局それはどういうことでそうなったのか。

回答)API 経由で強制されたのかもしれない、そうした記事を読んだような気もするが不確か。
#後日、発表者の方より Managing Your Plugin's Security (developer.wordpress.org)の情報をもらいました。これによれば、プラグインの脆弱性が WordPress セキュリティ チーム によって発見されると、プラグイン作成者に連絡して修正を促されたり、修正や更新される可能性があるということ。また「Automatic Plugin Security Updates」にあるように、WordPress 3.7 以降は、深刻な脆弱性をもつプラグインについて自動更新させる仕組み(メールでの連絡と審議プロセスが上記リンク先に書かれてます)を用意しているということですね。

プラグインアップデートで気をつけていることトラブル事例紹介(井元さん)



発表資料(Googleスライド)

コアのバージョンアップは、メジャーバージョンアップと、マイナーバージョンアップがある。

バージョンは3つの数字で構成されている(6.4.3 など)。

6.4.3 というバージョンの場合、6.4 までがメジャーバージョン、6.4.3 の 3 がマイナーバージョンと呼ばれている。

マイナーアップデートは、おもにバグ修正、パフォーマンス向上、セキュリティパッチなどが多く、アップデートによるサイトへの影響はほどんどない。それに加えてメジャーアップデートは、大きな変更がされる場合もあり、サイトへの影響もそれなりにある可能性がある。
# プラグインやテーマ、テーマ内のカスタマイズ部分などが非対応でサイトが動かなくなるとか
プラグインは、wo-content > plugins フォルダに保存されている。

プラグインアップデートで気をつけること

1. WordPress のバージョンと互換性があるか

#公式プラグインの情報は下記より確認できる
互換性がない場合、有効化できない、動作しないなどの警告がでたりする。

2. PHPのバージョンと互換性があるか

こちらについては、サーバーの PHP が古すぎて最新 WordPress が動作しない、あるいはWordPress が古すぎて 最新 PHP では動作できない場合があるので注意

3. メンテナンスがされていないプラグインかどうか

最終更新日がある程度あたらしいかどうか。
それだけでは判断せず、メンテナンスがされているか銅かを調べる。
あまり更新頻度が不要なプラグインがあって、メンテナンス頻度が低い場合(メンテナンスはされている)もあるので注意。


# 筆者の公式プラグイン(WP ADD MIME TYPES)などの場合、仕組みが単純(管理画面に力をいれているが)のため、それほど大きなメンテナンスが不要。そのため、思い起こしたときに検証済み情報を更新しているので最終更新日がある程度期間があいてしまっているが、実際には、いくつかの常に最新している WordPress の本番環境で動作させているので、そういう意味では常にメンテナンスはしている状態ではある。またプラグインサポートに書いてもらうと、毎日チェックしているので対応したりしている(いまのところ、ほぼ海外からのリクエストばかりですけど)。

4. functions.php に気をつけよう

自作フックなどを作っていた場合、その仕様が変更になったりなどして動かなくなる可能性があるので注意。

なぜアップデートが必要なのか


1. 脆弱性に対する対応

脆弱性をついてデータの盗聴(情報漏洩)、改ざん(加害者になってしまうおそれあり)、破壊(金銭的な被害を受ける)等いろいろな影響をうける可能性がある

2. 最新バージョンとの乖離

たまにしかアップデートしないと機能が大きく変化してしまっているので、問題がでやすく修正も難しくなってしまうおそれがある。

#あといくつか説明されていた。

アップデートの手順


1. バックアップ

プラグインアップデートによってサイトに影響(サイトが動かない、データがおかしくなる等)がでる可能性がある。したがってまず最初にするのはバックアップすることが大事である
もとにもどせるように練習しておくことも大事

2. プラグインの互換性の確認

バージョンアップによってどのような影響がでるのか事前に調べておく
利用している WordPress や PHP バージョンとの互換性

3. テスト環境でプラグインをアップデートする

できるだけ本番サイトと同じ状況を作るのが大事
# たとえば同一サーバーで別サブドメインなど( example.com なら demo.example.com にクローンして BASIC認証でロック(HTTP Authプラグイン等)しておくとよいかと。クローンサイトが Googleクローラーに検知されると SEO的にまずいため)
# あるいはパソコンにローカル環境( Local のようなツールをつかう ) とか

たとえばサイトをテスト環境にクローンして、全部最新にアップデートして問題が生じたところをどうなおすのか確認したりすることもある。

プラグインをアップデートしたことでおかしくなった事例


事例1)class、id の相違による見た目の崩れ

プラグイン側が出力する HTML(本体のほうでも)の class、 id、あるいはそもそも構造がかわってしまう場合もある。

こうした場合には、出力された HTML をみるとプラグイン側が CSS を追記していたので、それにあわせて CSSを調整するのが簡単。

プラグイン側も readme (プラグインのアップデート履歴として表示される)で class 変更した、CSS追加したなどを書いておくのがよいと想う。

事例2)サイトが見れなくなり、 WordPress の管理画面に入れなくなる

深呼吸して、サーバーのエラーログをチェックしてみる。
今回の事例では、下記が気になるところ。
PHP Parse error: syntac error
プラグイン/includes/mail.php on line 555

PHP上で深刻なエラーがでている。
該当ファイルの 555 行が問題となっている。

ということがわかる。もちろん PHP をよく知っている人なら見ていったらよいが、とりあえずはサイトの状況をみるのがよい。事例ではプラグインが要求しているのが WordPress 6.3 以降、PHPは 7.4以上。しかし サイトは、WordPress 6.2.4、 PHP 5.6.x だった。つまりは PHPが古すぎるなど乖離しすぎているのが問題。

# PHP 5.6系と 7.4.系はもう相当変化があるので、動かないことは自明といってもよい。
# WordPress の話ではないが、経験したことだと pukiwiki plusという wiki系ツールが、 5.4 以降に関数が廃止されてしまって動かなくなったなど割と致命的なこともあった。

デバッグモードを有効にするとより詳細がわかる場合もある。

wp-config.php に
define ( 'WP_DEBUG', true );
をいれる。

ただ本当に大量に警告がでたりするので、テストしおわったら無効化しておくこと
/* define ( 'WP_DEBUG', true ); */
のように /* と */ でくくった間は無効化できる。

質疑応答


質問)テスト環境の公開設定をどうしているか

回答)レンタルサーバーでは、大抵は初期ドメインと独自ドメインの2つはあるはずなので、初期ドメインにクローンして、そちらにはBASIC認証をかけているケースもある。

質問)アップデートをかけるときに、1つずつサイトにログインしてアップデートしているのか集中管理をしているのか

回答)1つずつログインして確認してからアップデートしている

#WP-CLIなどのツールを使う場合もある
#筆者は、過去に何度かそうしたやり方について WordCamp や Meetup などで発表したことある

アップデートについて話し合う会



グループに分けて話し合い
4人ぐらい

それぞれどのようなアップデートの方法をしているのか、熱く話し合いつつ、その後岡山での食事についてで盛り上がった。
「鉄板ポテトサラダ」なるものは岡山県民も知らないとか。たしかに検索しても出てこない。訪れた方から、暖簾に「鉄板ポテトサラダ」がある写真を提示されていたが、ちょっと気になりますね。岡山駅の南側の商店街にあったとか。

アップデートについては、内部的なサイトなら強制的にバックアップして自動更新して、問題あったらいってくれという感じでいけるかもしれない(WP-CLIなどを使って)。あるいは自身がすべて管理しているサイトでも可能かもしれない。しかしながら、テーマのみ管理や、WordPress のシステムメンテナンスだけしている顧客ということになるとそうした放任的なやり取りはなかなか厳しい。そうなると1つずつ影響がないかどうか調べた上で、個別アップデートが必要になってくるかも。サーバー1つに1サイトだと話は簡単だが、実際にはなかなかそうしたことは難しい。

懇親会



懇親会では、WordPress の話だけでなく岡山在住の方々と、岡山の観光地は?みたいな話で盛り上がりました。「醍醐桜」などは、車をチャーターしていく必要があるようですが、Meetup をそこでやってバスをチャーターしてみては!なんて話も面白かったですね。

で、かなり最終に近い新幹線+京都の在来線に気分良く載っていたのですが、同じ座席の切符をもつ乗客が出現。??と思っていたら、ちょうど降りないといけない京都をすぎて、名古屋に向かっていたのでした。

えっ、帰れるの!?とおもって、車掌さんに相談。


余裕であると言われましたが、なんと静岡駅で不審者が線路に立ち寄ったということで30分ぐらいの遅延が!? 京都駅まで戻れたとして、そこから在来線がないのでは?!とか、Google Mapで調べると、米原で一泊する情報しかないとかでドキドキしていましたが、なんとかギリギリ、こだまにのればギリギリなんとかなることがわかり、安心。 Google Map も後から情報が更新されて、こだまの次の「のぞみ」にのれば帰ることができそうでした。最終的には名古屋駅についた段階で、30分ぐらい遅延が生じていて、「のぞみ」「ひかり」では帰れないことに。ギリギリ「こだま」が遅延していなかったので、こちらで京都に変えることができ、地下鉄の最終電車(23:47)に乗ることができました。

いずれにせよ、今後は岡山から京都は1時間程度でつくので、絶対にねないようにしないといけないと思ったのでした。またもう30分ぐらい早い便(20時ぐらい)には新幹線にのるとなお安全ということと、飲み過ぎは厳禁ということも心に刻んだ一日となりました。

観光



岡山駅にきたら、とりあえず桃太郎銅像のところにフラフラといって写真を撮る。これはまぁ鉄板的な定番でしょう。


昼前に岡山駅に到着。早速路面電車にのって城下下車。PITAPAが使えたのが助かりました。先頭のところの運賃箱の下側にあるタッチして入る感じになります。


城下から降りて街並みをみると、かなり直線的に長い道路だなと思いました。


雅芳(がほう)(Google Map)で「デミかつ丼セット」を食べるんだ!と強い気持ちで訪れました。カツ丼 野村とまよったのですが混んでそうだったので、こちらを選択しました(次回機会があれば野村のほうにもいってみたい)。岡電にのりたかったので岡山駅から城下で下車しましたが、歩いて17分でもいけます。12時前についたときには満席でしたが、少しまっていると後からきた人と相席でもよいならということで、座敷に案内していただきました。デミかつ丼については、期待していた通りデミグラスソースがたっぷりとのったとんかつとご飯は、なかなか相性がよかったです。


西川緑道公園を目指してあるいていくと、商店街を通過。そのあたりの街並みも楽しいですし、脇道的なところでも直線的な長い道路になってますね。なかなか壮観。


大通りを歩道橋からみた感じが、左上の写真。右側は、西川緑道公園のところにある下石井公園。


ここから岡山駅までブラブラと散策したのでした。桜があるかなーとおもったら、それほどでもなかったですね。


暑い!暑いので、イオンモール横にある岡山駅の地下道を通って岡山駅へ。


地下で初めてストリートピアノのライブを見かけました。子どもも含めて何名な並んでました。


妻からのリクエストは、廣榮堂のきびだんご、古見屋羊羹の高瀬舟羊羹。これらのミッションは岡山駅2Fのお土産屋でクリアしました。高瀬舟羊羹については、おみやげ街道のところの大手まんぢゅう付近にありました。

2024年4月13日 @kimipooh

2022年1月29日土曜日

[福井] Fukui WordPress Meetup #15 - サイトの表示速度改善 & 壊して戻そうバックアップと復帰の手順 の会 に参加して #wpfukui #wordpress

 

プログラム:https://www.meetup.com/ja-JP/Fukui-WordPress-Meetup/events/283042791/

今回は、仕事で利用しているさくらインターネットのレンタルサーバーを扱うということで、参加しました。筆者は、サーバー管理者をしていることもあり、皆さん、サーバーのバックアップや復元をどのようにされているのか、考えているのかも知りたいところですね!

WordPress 5.9(フルサイトエディティング機能が実装、これは昨年参加した Kansai WordPress Meetup で体験した)がリリースされたばかりの模様(2022年1月26日)。これについて Meetup が開始されるまで雑談されてました。

以下、各セッションについては筆者が聞いて理解・体験した内容の備忘録です。

「壊して戻そうハンズオン」前半 … サイトのバックアップと破壊編


バックアップ方法は下記のようにいくつか方法がある。しかし重要なのは、「いかに簡単に復元できるか」ということ。

  1. FTP/phpMyAdmin等で手動
  2. プラグイン
    1. All-in-One WP Migration(有償版にしないと使いづらい / uploadの容量制限等がある)
    2. UpdraftPlus今回これでハンズオンにつかう / ドメインを変更する場合には有償版が必要)
    3. BackWPup(バックアップに特化、復元作業は煩雑)
  3. ホスティング業者のバックアップサービス

UpdraftPlusを使ったバックアップとサイトを壊すハンズオン


下記のように、UpdraftPlus プラグインをインストールして、有効化

設定 > UpdraftPlusバックアップを選択

「今すぐバックアップ」ボタンを押してバックアップ
*WordPress フォルダ内にバックアップされる

バックアップができると、「既存のバックアップ」の項目にある5つのボタン「データベース」「プラグイン」「テーマ」「アップロード」「その他」をそれぞれクリックします。

すると下図のようにダウンロードできるようなウィンドウができるので、ダウンロードボタンを押して端末にバックアップデータをダウンロードします。

そして下記のように5つのバックアップが存在することを確認します。

壊す前のサイトトップ画面


そして WordPress を壊します。
まずはさくらインターネットのクイックインストールを使った場合、下図のパッケージに表示されているのでアンインストールします。

次にデータベースも削除します。



これで完全に消えたということになります。

表示速度改善のヒント


サーバー自体のレスポンスが遅く表示が遅い場合には、サーバーのプラン変更やサーバー変更などをするのは大前提。

Google の PageSpeed Insights は、LCP(First Contentful Pain) やCLS(Largest Contentful Paint)、画像フォーマット(次世代フォーマット(webp)で配信しているか等)など最新の評価項目がでているため、評価情報がガラリと変わっている。JQueryは重い。また読み込み時にレイアウトが崩れていると評価が低くなる。

単にサイト表示が速いだけでは高得点にはならない。
表示速度が早くても画像の軽量化をしていない場合などは、点数が伸びない。

また読み込みを遅延する、Native Lazyload(WordPress 5.5から標準サポート)を導入する。head にいれたものを footer に持ってくるとか(jQuery系には影響がでるので、そのあたりは対応が必要)。

WebP への変換(WebPはかなり圧縮率が良い。ただしアイコンなどの場合には逆に増えてしまうこともあるので注意)
Google:https://squoosh.app/
TinyPNG: https://tinypng.com/
WebP Converter for Mediaプラグインを使う。

いろいろ対応すると 95%を超えることもできる。

WebP Converter for Mediaプラグイン:

https://ja.wordpress.org/plugins/webp-converter-for-media/ を使えばメディア画像を WebPに変換できる。
こちらで重要なのは、利用している Webサーバの仕組みが、 Apache(.htaccessが使えること)かそれ以外(NGINX)によって、設定変更が必要だということ。デフォルトは、Apache(.htaccess)が利用できる(さくらインターネットのレンタルサーバ含む)設定となっている。


プラグインインストール後、設定の末尾にある 「Regenerate All」ボタンをクリックして変換をする。

私の持つサイトの一つのケースでは下記のようにそれなりに圧縮できた感じ。

実際の Chromeの要素の検証(Develoer Tools)で png 画像が webpとして読み込まれていることを確認

元を図り忘れてしまったこと、もともと重いサイトだったことを加味すると、まぁそれなりの効果はでているかもしれない。

質疑応答
  • 画像の Alt を設定していないとどうなるか
    • アクセシビリティが悪くなるので、かなり評価が下がる。ChromeのLighthouse 拡張機能を使えば、ユーザ補助の項目がアクセシビリティとなる。
  • 外部画像の読み込みが遅い点はどうしたらよいか(アフィリエイターの視点)
その他の質問応答
  • テーマのテスト環境用のローカル環境は wp-env がおすすめ

「壊して戻そうハンズオン」後半 … サイトの新規作成とバックアップからの復帰編

インストールしたフォルダと同じところに復元する必要がある。
これがわからなくなった場合、先程バックアップしたファイルのうち、 gzip圧縮されたものを展開してファイルをテキストエディタで開くと情報が書かれている

クイックインストールを開始

インストールURLは、壊したサイトのものを選べばよい(まだ残しているなら)。ドメインごと消してしまっているなら、ドメインを新規作成して以前と同じフォルダを指定。データベース作成ボタンから、データベースは新規作成する。こちらは新しい名前でも構わない。

これで WordPressにログインできるようになったはずなので、再び UpdraftPlus プラグインをインストールし、有効化する。



「既存のバックアップ」項目から「バックアップファイルをアップロード」リンクをクリックして、以前バックアップした5つのファイルをアップロードしましょう。



アップロードが終わるとその下に、「復元」ボタンでてきます。これをクリックします。

すると復元する項目がでてくるので、すべてチェックして「次」のボタンをクリックします。

うまくいけば、下記のように Restore successful! という成功のメッセージがでてきます。
その後、「UpdraftPlus 設定に戻る」ボタンをクリックします。

サイトが完全に復元データに置き換わっているので、つまりはユーザー情報も新しくなっていますので、ログインを求めてきます。そのためバックアップする前のユーザーでログインしてください。


うまくいけば、下図のようにもとに戻っていることが確認できるでしょう。
実際には他にもメディアや投稿、固定ページ等いくつか確認するとよいと思います。


質疑応答

筆者は、サイトリニューアルを依頼するときに、以前はMAMPのサイトクローンをいれてデザイナーの人に渡してました(MacなどMAMPごと圧縮して手渡していた)が、いまはもうクローン用のデモサイトを立ち上げて使ってもらってます。

なお筆者はサーバー管理者でもあるので、CUIツールである WP-CLIを組み合わせて自動バックアップ、WordPress更新をしてます。

2022年1月29日 @kimipooh