<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WordPress &#8211; FITSブログ</title>
	<atom:link href="https://blog.fits-inc.jp/tag/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.fits-inc.jp</link>
	<description>Webシステムの受託開発でお困りなら</description>
	<lastBuildDate>Tue, 21 Jul 2020 14:58:57 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.1</generator>

<image>
	<url>https://blog.fits-inc.jp/wp-content/uploads/2024/06/cropped-image-5-32x32.png</url>
	<title>WordPress &#8211; FITSブログ</title>
	<link>https://blog.fits-inc.jp</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Lightsail 上に作成したWordPressインスタンスのPHPをバージョンアップする</title>
		<link>https://blog.fits-inc.jp/2020/07/21/lightsail-%e4%b8%8a%e3%81%ab%e4%bd%9c%e6%88%90%e3%81%97%e3%81%9fwordpress%e3%82%a4%e3%83%b3%e3%82%b9%e3%82%bf%e3%83%b3%e3%82%b9%e3%81%aephp%e3%82%92%e3%83%90%e3%83%bc%e3%82%b8%e3%83%a7%e3%83%b3/</link>
		
		<dc:creator><![CDATA[FITS Admin]]></dc:creator>
		<pubDate>Tue, 21 Jul 2020 14:58:56 +0000</pubDate>
				<category><![CDATA[ブログ]]></category>
		<category><![CDATA[bitnami]]></category>
		<category><![CDATA[Lightsail]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[バージョンアップ]]></category>
		<guid isPermaLink="false">https://blog.fits-inc.jp/?p=701</guid>

					<description><![CDATA[　この記事では、Lightsail 上に構築したWordPress環境（内部ではUbuntu、bitnamiを使用）でPHPのバージョンを上げるための方法を記載します。なお、この方法では現時点ではPHP7.3までしかバー [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">　この記事では、Lightsail 上に構築したWordPress環境（内部ではUbuntu、bitnamiを使用）でPHPのバージョンを上げるための方法を記載します。なお、この方法では現時点ではPHP7.3までしかバージョンを上げることが出来ませんのでご注意をお願いいたします。</p>



<h2 class="wp-block-heading">WordPressのサイトヘルスステータスでPHPバージョンが指摘される</h2>



<p class="wp-block-paragraph">　そもそもなぜ PHP のバージョンを上げるかと言うと、WordPressのサイトヘルスステータスで下記のようにPHPのバージョンが古いことが指摘されるようになったからです。</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="1449" height="620" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/サイトヘルスステータスでPHPバージョンの古さを指摘される.png" alt="" class="wp-image-702" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/07/サイトヘルスステータスでPHPバージョンの古さを指摘される.png 1449w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/サイトヘルスステータスでPHPバージョンの古さを指摘される-300x128.png 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/サイトヘルスステータスでPHPバージョンの古さを指摘される-1024x438.png 1024w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/サイトヘルスステータスでPHPバージョンの古さを指摘される-768x329.png 768w" sizes="(max-width: 1449px) 100vw, 1449px" /></figure>



<pre class="wp-block-code"><code>サイトがPHPの古いバージョン（7.2.13）を実行しており、更新をおすすめします</code></pre>



<p class="wp-block-paragraph">　また、たとえここで指摘されなかったとしても、PHP7.2系は2020年11月30日でセキュリティサポートが停止されますから、アップデートしておくに越したことはありません。</p>



<h2 class="wp-block-heading">bitnami でインストールされた WordPress のPHPバージョンアップは難しい</h2>



<p class="wp-block-paragraph">　PHPやMySQLのバージョンアップであれば、Lightsailのインスタンスのディストリビューション（ubuntu）に合わせて所定のアップデート作業を行えばよいと考えていましたが、bitnamiでインストールされた PHP は、通常の構成ではなくbitnami用のディレクトリ構成となっており、アップデートするのであれば bitnami 丸ごと最新バージョンに上げる必要がありそうでした。それはそれで面白そうではあるので検証環境で試してみたいのですが、今回は確実な方法を取ることとしました。</p>



<h2 class="wp-block-heading">Lightsailの新インスタンスを立ち上げ、WordPressのバックアップを復元する</h2>



<p class="wp-block-paragraph">　今回実施するのは、現行のインスタンスでコンテンツとDBのバックアップを取得しておき、それを新しいLightsailのインスタンスで復元する、という方法です。bitnamiの最新バージョンインストールを試すにせよ、検証環境の立ち上げは必要となるので、それならば別インスタンスへのバックアップによる移行を検証しつつ、バージョンアップ（新しいインスタンスでは各種ツールのバージョンが更新されている）を狙っています。</p>



<h2 class="wp-block-heading">現行インスタンスでWordPressのコンテンツとDBをバックアップ</h2>



<p class="wp-block-paragraph">　まずは現行のインスタンスにSSHログインし、コンテンツとDBをバックアップします。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="949" height="500" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/現行サーバーにSSHログイン.png" alt="" class="wp-image-703" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/07/現行サーバーにSSHログイン.png 949w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/現行サーバーにSSHログイン-300x158.png 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/現行サーバーにSSHログイン-768x405.png 768w" sizes="(max-width: 949px) 100vw, 949px" /></figure>



<p class="wp-block-paragraph">　なお、MySQLのrootユーザーのパスワードは</p>



<pre class="wp-block-code"><code>$ cat ~/bitnami_application_password</code></pre>



<p class="wp-block-paragraph">で確認できますので、確認しておきます。こちらのパスワードを使用してMySQLサーバーへログイン後、DB名を確認してDBをバックアップします。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="970" height="407" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/現行インスタンスのMySQLにログインする.png" alt="" class="wp-image-704" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/07/現行インスタンスのMySQLにログインする.png 970w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/現行インスタンスのMySQLにログインする-300x126.png 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/現行インスタンスのMySQLにログインする-768x322.png 768w" sizes="(max-width: 970px) 100vw, 970px" /></figure>



<p class="wp-block-paragraph">バックアップのためのコマンドは</p>



<pre class="wp-block-code"><code>$ mysqldump --single-transaction -u root -p bitnami_wordpress > ~/bitnami_wordpress.dump</code></pre>



<p class="wp-block-paragraph">です。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="964" height="502" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/DB名確認後、mysqldumpにてダンプ.png" alt="" class="wp-image-705" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/07/DB名確認後、mysqldumpにてダンプ.png 964w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/DB名確認後、mysqldumpにてダンプ-300x156.png 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/DB名確認後、mysqldumpにてダンプ-768x400.png 768w" sizes="auto, (max-width: 964px) 100vw, 964px" /></figure>



<p class="wp-block-paragraph">なお、WordPressのコンテンツ側のバックアップは</p>



<pre class="wp-block-code"><code>$ tar acvf wp.tar.gz /opt/bitnami/apps/wordpress/htdocs/</code></pre>



<p class="wp-block-paragraph">で可能です。作成された wp.tar.gz と bitnami_wordpress.dump は、SCPなどでローカルに保存しておきます。続いて新しいインスタンスを立ち上げます。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1166" height="737" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/インスタンスイメージの選択.png" alt="" class="wp-image-706" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/07/インスタンスイメージの選択.png 1166w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/インスタンスイメージの選択-300x190.png 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/インスタンスイメージの選択-1024x647.png 1024w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/インスタンスイメージの選択-768x485.png 768w" sizes="auto, (max-width: 1166px) 100vw, 1166px" /></figure>



<p class="wp-block-paragraph">新しいインスタンスにSSHログインして、PHPバージョンを確認してみましょう。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="956" height="698" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/新しく立ち上げたインスタンス.jpg" alt="" class="wp-image-707" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/07/新しく立ち上げたインスタンス.jpg 956w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/新しく立ち上げたインスタンス-300x219.jpg 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/新しく立ち上げたインスタンス-768x561.jpg 768w" sizes="auto, (max-width: 956px) 100vw, 956px" /></figure>



<p class="wp-block-paragraph">PHPが7.3に更新されていることが分かります。</p>



<h2 class="wp-block-heading">バックアップからWordPressを復元する</h2>



<p class="wp-block-paragraph">　WordPressをバックアップから復元しますが、DBユーザーとして既に存在するWordPressのデフォルトユーザーをそのまま使用するため、予めWordPressのユーザーパスワードを控えておきます。</p>



<pre class="wp-block-code"><code>$ cat /opt/bitnami/apps/wordpress/htdocs/wp-config.php | grep DB_PASSWORD</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="968" height="110" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/WordPressのデフォルトユーザーのパスワードを確認.png" alt="" class="wp-image-708" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/07/WordPressのデフォルトユーザーのパスワードを確認.png 968w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/WordPressのデフォルトユーザーのパスワードを確認-300x34.png 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/WordPressのデフォルトユーザーのパスワードを確認-768x87.png 768w" sizes="auto, (max-width: 968px) 100vw, 968px" /></figure>



<p class="wp-block-paragraph">　wp.tar.gz と bitnami_wordpress.dump を任意の場所（今回はホームディレクトリ）にSCPなどで格納しておき、展開とDBリストアを行います。</p>



<pre class="wp-block-code"><code>$ cd /
$ sudo tar ~/xvf wp.tar.gz
$ mysql -u root -p bitnami_wordpress &lt; ~/bitnami_wordpress.dump</code></pre>



<p class="wp-block-paragraph">　上記コマンドでwp-config.php が上書きされてしまっていますので、控えておいたDBユーザーのパスワードを再度記載しておきます。</p>



<pre class="wp-block-code"><code>$ vim /opt/bitnami/apps/wordpress/htdocs/wp-config.php</code></pre>



<p class="wp-block-paragraph">　ここまで実行すれば、新しいインスタンス上でWordPressが動作するはずです。あとはDNSのAレコードなどを書き換えて、新インスタンスとドメインを紐づければ移行が完了します。なお、Aレコード変更前に直接新インスタンスのIPを指定するなどしてアクセスすると、Jetpackがセーフモードで実行されてしまいますが、これは別ドメインでJetpackが実行されているためで、Aレコードの書き換えが反映され、移行前のURLで新インスタンスへアクセスすれば解消されます。</p>



<p class="wp-block-paragraph">　また、コンテンツかDBどちらかのバックアップ、復元が失敗するなどしてDBとWordPressが不整合となっていると、下記のような画像が表示されることがあるので注意してください。この場合は、復元手順にミスがないか確認し、ミスが無いのであればバックアップの作成からやり直すのが良いです。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="563" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/WordPressのアップデート画面-1024x563.png" alt="" class="wp-image-709" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/07/WordPressのアップデート画面-1024x563.png 1024w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/WordPressのアップデート画面-300x165.png 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/WordPressのアップデート画面-768x422.png 768w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/WordPressのアップデート画面.png 1218w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">　いかがでしたでしょうか？このほか、bitnamiのロゴを消したり、証明書を旧インスタンスからコピーしたり、証明書更新用のLet&#8217;s Encrypt用cronタブを再設定したりと、面倒なこともありますので、次回はスナップショットからの検証環境立ち上げと、bitnamiの最新バージョンインストールによるバージョンアップが可能か、を検証していきたいと思います。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Lightsail で運用している WordPress 用の Let&#8217;s Encrypt 証明書を更新する</title>
		<link>https://blog.fits-inc.jp/2020/05/16/lightsail-%e3%81%a7%e9%81%8b%e7%94%a8%e3%81%97%e3%81%a6%e3%81%84%e3%82%8b-wordpress-%e7%94%a8%e3%81%ae-lets-encrypt-%e8%a8%bc%e6%98%8e%e6%9b%b8%e3%82%92%e6%9b%b4%e6%96%b0%e3%81%99%e3%82%8b/</link>
		
		<dc:creator><![CDATA[FITS Admin]]></dc:creator>
		<pubDate>Sat, 16 May 2020 00:14:51 +0000</pubDate>
				<category><![CDATA[技術ブログ]]></category>
		<category><![CDATA[Lightsail]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://blog.fits-inc.jp/?p=473</guid>

					<description><![CDATA[　以前、Lightsail で運用している WordPress の SSL 対応を Let&#8217;s Encrypt で行ったのですが、証明書の有効期限が近くなったため更新処理を行いました。その際の作業メモです。  [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">　以前、Lightsail で運用している WordPress の SSL 対応を Let&#8217;s Encrypt で行ったのですが、証明書の有効期限が近くなったため更新処理を行いました。その際の作業メモです。</p>



<h2 class="wp-block-heading">作業はWebターミナルで行う</h2>



<p class="wp-block-paragraph">　今回は簡単に進めるため、LightsailのダッシュボードからWebターミナルを起動します。オレンジ色の「>_」と表示されているボタンをクリックすればWebのターミナルが起動します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="403" src="https://blog.fits-inc.jp/wp-content/uploads/2020/05/Lightsailのダッシュボード-1024x403.png" alt="" class="wp-image-474" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/05/Lightsailのダッシュボード-1024x403.png 1024w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/Lightsailのダッシュボード-300x118.png 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/Lightsailのダッシュボード-768x303.png 768w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/Lightsailのダッシュボード-1536x605.png 1536w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/Lightsailのダッシュボード.png 1576w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">　Webターミナルが起動しました。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="480" src="https://blog.fits-inc.jp/wp-content/uploads/2020/05/GUIターミナル起動後-1024x480.png" alt="" class="wp-image-475" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/05/GUIターミナル起動後-1024x480.png 1024w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/GUIターミナル起動後-300x141.png 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/GUIターミナル起動後-768x360.png 768w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/GUIターミナル起動後.png 1258w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">　それでは証明書を更新していきましょう。Let&#8217;s Encrypt のインストールディレクトリに移動した後に、こちらのコマンドを実行すれば証明書の更新が確認できます。</p>



<pre class="wp-block-code"><code>$ sudo certbot-auto renew</code></pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="407" src="https://blog.fits-inc.jp/wp-content/uploads/2020/05/certbot-auto_renewによる証明書の更新-1024x407.png" alt="" class="wp-image-476" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/05/certbot-auto_renewによる証明書の更新-1024x407.png 1024w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/certbot-auto_renewによる証明書の更新-300x119.png 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/certbot-auto_renewによる証明書の更新-768x305.png 768w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/certbot-auto_renewによる証明書の更新.png 1500w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">　証明書が更新され、次回の有効期限は 2020/07/30 であることがわかります。（画像は更新後に再度実行したため、実際の更新ログが表示されていません）また、「./certbot-auto has insecure permissions!」という警告メッセージが表示されていますので続いてこれを解消していきます。</p>



<h2 class="wp-block-heading">certbot-auto has insecure permissions を解消する</h2>



<p class="wp-block-paragraph">　「./certbot-auto has insecure permissions!」については、こちらの記事に解消方法が載っています<br><a href="https://community.letsencrypt.org/t/certbot-auto-deployment-best-practices/91979/" class="aioseop-link">https://community.letsencrypt.org/t/certbot-auto-deployment-best-practices/91979/</a></p>



<ol class="wp-block-list"><li>一般ユーザーに書き込み権限がないディレクトリに certbot-auto を配置すること（例えば /usr/local/bin など）</li><li>所有者を root ユーザーにすること</li><li>パーミッションを 0755 （所有者のみが書き込み可能）に設定すること</li></ol>



<p class="wp-block-paragraph">まとめると、下記の一連のコマンドで解消できそうです。</p>



<pre class="wp-block-code"><code>$ sudo chown root:root certbot-auto
$ sudo chmod 755 certbot-auto
$ mv certbot-auto /usr/local/bin</code></pre>



<p class="wp-block-paragraph">上記を実施した結果、エラーが解消されました。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="385" src="https://blog.fits-inc.jp/wp-content/uploads/2020/05/エラーが解消された-1024x385.png" alt="" class="wp-image-477" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/05/エラーが解消された-1024x385.png 1024w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/エラーが解消された-300x113.png 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/エラーが解消された-768x289.png 768w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/エラーが解消された.png 1466w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">dry-run について</h2>



<p class="wp-block-paragraph">　なお、certbot-auto renew には –-dry-run のオプションが設定可能です。サーバーの設定を変更した後、事前にcertbot-auto renewで正しく証明書が取得、更新されるか確認したい場合は –-dry-run のオプション付きで実行しましょう。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="598" src="https://blog.fits-inc.jp/wp-content/uploads/2020/05/dry-run-1024x598.png" alt="" class="wp-image-478" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/05/dry-run-1024x598.png 1024w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/dry-run-300x175.png 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/dry-run-768x448.png 768w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/dry-run.png 1395w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">　実際に&#8211;dry-runオプション付きで実行したところ、「Congratulations, all renewals succeeded. The following certs have been renewed:」と出力されているので、証明書の更新処理には成功することがわかります。</p>



<p class="wp-block-paragraph">　さらに「DRY RUN: simulating」や「(The test certificates above have not been saved.)」という出力から、実際には証明書更新が行われないことがわかります。</p>



<p class="wp-block-paragraph">　ここまでが、Lightsail上でLet&#8217;s Encryptの証明書を更新した際の作業記録でした。もちろん、Lightsail や WordPress に限定した話ではないので、他のVPSなどでも同様の手順で更新できると思います。次回は機会があれば、cron（クロン）による証明書の自動更新設定を解説します。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WordPress で会員制のサイトを作成するための調査（その２Simple Membership編）</title>
		<link>https://blog.fits-inc.jp/2020/05/10/wordpress-%e3%81%a7%e4%bc%9a%e5%93%a1%e5%88%b6%e3%81%ae%e3%82%b5%e3%82%a4%e3%83%88%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b%e3%81%9f%e3%82%81%e3%81%ae%e8%aa%bf%e6%9f%bb%ef%bc%88%e3%81%9d-2/</link>
		
		<dc:creator><![CDATA[FITS Admin]]></dc:creator>
		<pubDate>Sun, 10 May 2020 17:06:46 +0000</pubDate>
				<category><![CDATA[技術ブログ]]></category>
		<category><![CDATA[Simple Membership]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://blog.fits-inc.jp/?p=436</guid>

					<description><![CDATA[　前回、WordPress の Theme My Login プラグインを利用した会員サイト構築を調査したのですが、有償化しないと使えない機能が多いなどしっくりこなかったため、 Simple Membership プラグ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">　前回、WordPress の Theme My Login プラグインを利用した会員サイト構築を調査したのですが、有償化しないと使えない機能が多いなどしっくりこなかったため、 Simple Membership プラグインをインストールして調査しました。Simple Membershipの特徴としては</p>



<ul class="wp-block-list"><li>日本語化されている</li><li>有料会員、無料会員を作成することができる</li><li>ログインページやプロフィールページを固定ページで用意できる</li></ul>



<p class="wp-block-paragraph">などです。早速インストールから見ていきましょう。</p>



<h2 class="wp-block-heading">Simple Membership プラグインのインストール</h2>



<p class="wp-block-paragraph">　プラグインのインストールに関しては特に難しいことはなく、WordPressの管理画面より「プラグイン＞新規追加」を選択後、プラグイン名を入れてインストール、有効化を行ってください。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="559" height="373" src="https://blog.fits-inc.jp/wp-content/uploads/2020/05/SimpleMembership.png" alt="" class="wp-image-437" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/05/SimpleMembership.png 559w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/SimpleMembership-300x200.png 300w" sizes="auto, (max-width: 559px) 100vw, 559px" /></figure>



<p class="wp-block-paragraph">設定について公式サイトの<br>Basic setup and configuration documentation (Read This First) を読んでみると、まず会員レベルの作成を行う必要があるようです。<br><a href="https://simple-membership-plugin.com/simple-membership-plugin-basic-setup-documentation/" class="aioseop-link">https://simple-membership-plugin.com/simple-membership-plugin-basic-setup-documentation/</a></p>



<h2 class="wp-block-heading">無料会員の作成</h2>



<p class="wp-block-paragraph">左サイドメニューから「会員レベル」「レベルの追加」の順に選択し、会員レベル名に「無料会員」と入力した後「新規メンバーシップレベルの追加」をクリックして、無料会員を作成します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="761" src="https://blog.fits-inc.jp/wp-content/uploads/2020/05/無料会員を追加-1024x761.png" alt="" class="wp-image-438" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/05/無料会員を追加-1024x761.png 1024w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/無料会員を追加-300x223.png 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/無料会員を追加-768x570.png 768w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/無料会員を追加.png 1081w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">　無料会員が作成されました。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="358" src="https://blog.fits-inc.jp/wp-content/uploads/2020/05/会員レベルが作成されました-1024x358.png" alt="" class="wp-image-439" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/05/会員レベルが作成されました-1024x358.png 1024w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/会員レベルが作成されました-300x105.png 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/会員レベルが作成されました-768x268.png 768w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/会員レベルが作成されました.png 1431w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">　この状態でサイトにアクセスすると、ログインや登録といったアイテムがヘッダーメニューに追加されているので、まずは登録を行います。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="400" src="https://blog.fits-inc.jp/wp-content/uploads/2020/05/ツールバーから登録が可能-1024x400.png" alt="" class="wp-image-440" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/05/ツールバーから登録が可能-1024x400.png 1024w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/ツールバーから登録が可能-300x117.png 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/ツールバーから登録が可能-768x300.png 768w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/ツールバーから登録が可能-1536x600.png 1536w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/ツールバーから登録が可能.png 1736w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">　こちらが登録ページです。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="632" src="https://blog.fits-inc.jp/wp-content/uploads/2020/05/登録画面-1024x632.png" alt="" class="wp-image-441" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/05/登録画面-1024x632.png 1024w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/登録画面-300x185.png 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/登録画面-768x474.png 768w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/登録画面.png 1313w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">　上記は固定ページの「登録」です。他にもパスワードリセットやメンバーログイン用のページが固定ページで作成されています。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="707" height="752" src="https://blog.fits-inc.jp/wp-content/uploads/2020/05/SimpleMembershipの固定ページ.png" alt="" class="wp-image-442" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/05/SimpleMembershipの固定ページ.png 707w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/SimpleMembershipの固定ページ-282x300.png 282w" sizes="auto, (max-width: 707px) 100vw, 707px" /></figure>



<p class="wp-block-paragraph">　ユーザーを登録後、ログインしてみます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="521" src="https://blog.fits-inc.jp/wp-content/uploads/2020/05/ログイン画面-1024x521.png" alt="" class="wp-image-443" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/05/ログイン画面-1024x521.png 1024w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/ログイン画面-300x153.png 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/ログイン画面-768x391.png 768w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/ログイン画面.png 1221w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">　プロフィールが編集、確認可能となりました。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="886" height="819" src="https://blog.fits-inc.jp/wp-content/uploads/2020/05/ログイン後のプロフィール編集ページ.png" alt="" class="wp-image-444" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/05/ログイン後のプロフィール編集ページ.png 886w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/ログイン後のプロフィール編集ページ-300x277.png 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/ログイン後のプロフィール編集ページ-768x710.png 768w" sizes="auto, (max-width: 886px) 100vw, 886px" /></figure>



<p class="wp-block-paragraph">　ログイン状態で、ダッシュボードを表示しようとするとメッセージが出て表示できないようになっています。（設定でダッシュボードの表示を禁止した場合）</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="630" height="142" src="https://blog.fits-inc.jp/wp-content/uploads/2020/05/ダッシュボードアクセス時はメッセージが表示される.png" alt="" class="wp-image-445" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/05/ダッシュボードアクセス時はメッセージが表示される.png 630w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/ダッシュボードアクセス時はメッセージが表示される-300x68.png 300w" sizes="auto, (max-width: 630px) 100vw, 630px" /></figure>



<p class="wp-block-paragraph">　また、ページ編集時に会員レベルごとに表示する、しないを設定できるようになります（閲覧権限を設定）。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="812" height="921" src="https://blog.fits-inc.jp/wp-content/uploads/2020/05/会員レベルによる制限が可能.png" alt="" class="wp-image-446" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/05/会員レベルによる制限が可能.png 812w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/会員レベルによる制限が可能-264x300.png 264w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/会員レベルによる制限が可能-768x871.png 768w" sizes="auto, (max-width: 812px) 100vw, 812px" /></figure>



<p class="wp-block-paragraph">　閲覧が許可されていないレベルのメンバーがコンテンツを表示しようとするとこのようなメッセージが表示されます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="968" height="560" src="https://blog.fits-inc.jp/wp-content/uploads/2020/05/コンテンツ閲覧時に会員登録が求められるようになりました.png" alt="" class="wp-image-447" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/05/コンテンツ閲覧時に会員登録が求められるようになりました.png 968w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/コンテンツ閲覧時に会員登録が求められるようになりました-300x174.png 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/コンテンツ閲覧時に会員登録が求められるようになりました-768x444.png 768w" sizes="auto, (max-width: 968px) 100vw, 968px" /></figure>



<h2 class="wp-block-heading">Simple MembershipプラグインのDBへの影響を調査する</h2>



<p class="wp-block-paragraph">SimpleMembership プラグインをインストールすると、下記のようにDBに</p>



<ul class="wp-block-list"><li>wp_swpm_members_tbl</li><li>wp_swpm_membership_meta_tbl</li><li>wp_swpm_membership_tbl</li><li>wp_swpm_payments_tbl</li></ul>



<p class="wp-block-paragraph">が追加されます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="461" height="341" src="https://blog.fits-inc.jp/wp-content/uploads/2020/05/プラグインインストール後のDB調査.png" alt="" class="wp-image-448" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/05/プラグインインストール後のDB調査.png 461w, https://blog.fits-inc.jp/wp-content/uploads/2020/05/プラグインインストール後のDB調査-300x222.png 300w" sizes="auto, (max-width: 461px) 100vw, 461px" /></figure>



<p class="wp-block-paragraph">これらの具体的な挙動や、プラグインの拡張、カスタマイズについて引き続き調査を進めていきます。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WordPress で会員制のサイトを作成するための調査（その１）</title>
		<link>https://blog.fits-inc.jp/2020/05/06/wordpress-%e3%81%a7%e4%bc%9a%e5%93%a1%e5%88%b6%e3%81%ae%e3%82%b5%e3%82%a4%e3%83%88%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b%e3%81%9f%e3%82%81%e3%81%ae%e8%aa%bf%e6%9f%bb%ef%bc%88%e3%81%9d%e3%81%ae/</link>
		
		<dc:creator><![CDATA[FITS Admin]]></dc:creator>
		<pubDate>Wed, 06 May 2020 15:07:21 +0000</pubDate>
				<category><![CDATA[技術ブログ]]></category>
		<category><![CDATA[Theme My Login]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPressプラグイン]]></category>
		<guid isPermaLink="false">https://blog.fits-inc.jp/?p=418</guid>

					<description><![CDATA[　WordPress で会員制のサイトを作成するためのプラグインを調査していた際に Theme My Login というプラグインを見つけました。このプラグインを利用すると簡単に会員制サイトが作成できるということでしたが [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">　WordPress で会員制のサイトを作成するためのプラグインを調査していた際に Theme My Login というプラグインを見つけました。このプラグインを利用すると簡単に会員制サイトが作成できるということでしたが、そもそもプラグインでの会員登録をどのようにして実現しているか興味があって調査してみました。</p>



<h2 class="wp-block-heading">きっかけはプラグインのエラー表示から</h2>



<p class="wp-block-paragraph">　早速 Theme My Login プラグインを有効化し、登録ページを表示してみると「現在、ユーザー登録はできません」というメッセージが表示されまして。<br>原因を調査すると、WordPress のダッシュボードの『設定 ＞ 一般』から『メンバーシップ』の『だれでもユーザー登録ができるようにする』をチェックする必要があるようです。このチェックボックスのオンオフが内部的にどのような挙動をするのか興味があって調べてみました。</p>



<h2 class="wp-block-heading">users_can_register とは？</h2>



<p class="wp-block-paragraph">　まず、この設定画面のソースコードである options-general.php を確認すると<br>get_option( &#8216;users_can_register&#8217; ) した値を表示していることがわかりました。get_option は WordPress Codex によれば options テーブルからの値の取得です。<br><a href="https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_option" class="aioseop-link">https://wpdocs.osdn.jp/関数リファレンス/get_option</a></p>



<p class="wp-block-paragraph">　つまりこのチェックボックスは users_can_register というキーでDBにデータを書き込みそれをもとに処理や表示を切り替えるためのフラグだとわかります。</p>



<h2 class="wp-block-heading">users_can_register から会員登録（ユーザー登録）まで処理を追う</h2>



<p class="wp-block-paragraph">　では実際に users_can_register を利用して処理や表示を切り替えている箇所を調べてみます。該当箇所は何か所かあるのですが、最も該当数が多いのは wp-login.php でした。どうやら users_can_register が有効の状態ではログイン画面に登録用のリンクが表示され、それをクリックするとユーザー登録用のページ wp-login.php?action=register へと遷移するようになっているようです。</p>



<h2 class="wp-block-heading">register アクションの調査</h2>



<p class="wp-block-paragraph">　register action については wp-login.php 内に<br>switch ( $action ) で処理を分岐させている箇所があり、その switch 節の中の case ラベルとして<br>confirm_admin_email<br>lostpassword<br>など様々なアクションごとの処理が定義されています。</p>



<p class="wp-block-paragraph">アクションごとの処理はさらにGETの場合（テンプレートの表示処理）と、POSTの場合（『登録』などのフォームボタンクリック時の処理）に分かれており、if ( $http_post ) から始まる if 節の中身が POST の場合の処理です。</p>



<p class="wp-block-paragraph">　POST の場合の処理を確認すると、register_new_user というメソッドがWordPress標準の会員登録処理の実処理であることがわかります。</p>



<h2 class="wp-block-heading">register_new_user の処理から、会員情報（ユーザー情報）の登録処理と管理しているDBを調べる</h2>



<p class="wp-block-paragraph">　register_new_user については残念ながら日本語サイトで解説はないのですが（2020/05/06 現在）下記WordPressの開発者向けサイトから概要や、ソースコードそのものの確認が可能です。<br><a href="https://developer.wordpress.org/reference/functions/register_new_user/" class="aioseop-link">https://developer.wordpress.org/reference/functions/register_new_user/</a><br>ソースコードを読む限りでは、パスワードを自動生成し、DBへのユーザーの登録処理は wp_create_user に任せているようです。</p>



<p class="wp-block-paragraph">　wp_create_user も user_login, user_email, user_pass で compact した Array を生成して wp_insert_user に処理を任せています。</p>



<p class="wp-block-paragraph">wp_insert_user まで読み進むと、ようやく $wpdb->users に対して $wpdb->update または $wpdb->insert していることがわかります。<br>　つまり、 WordPress 標準機能で追加されたユーザーは users テーブルに挿入されます。なお、ここで気になるのがユーザー生成時のロールですが、wp_insert_user 呼び出し時の引数オブジェクトに role というプロパティが設定されていればそれが設定されますし、設定されていなければデフォルトのロールが用いられます。</p>



<p class="wp-block-paragraph">　ただしロールについては users テーブルには格納されていません。というのも users テーブルに格納されているのは認証に必要な情報のみで、それ以外のデータはすべて usermeta テーブルに格納されているからです。<br>　usermeta テーブルには meta_key = wp_capabilities のレコードがあり、meta_value にシリアライズされた ロール情報が格納されています。<br>ここまでで、WordPress のデフォルト機能がユーザー情報をどのように格納しているかがわかりました。</p>



<h2 class="wp-block-heading">実際のプラグインではどのようにユーザー情報を登録しているか？</h2>



<p class="wp-block-paragraph">　それでは、その他のプラグインではどのようにユーザー情報を登録、管理しているのでしょうか？あるプラグインを例にとって調べてみると、まず wp-login.php をそのまま使用するのではなく、add_action によるフックを行い、ログインページや登録ページを別に用意しているようです。また、ユーザーの登録には wp_create_user を利用していました。</p>



<p class="wp-block-paragraph">　この場合、ユーザー情報自体はusersテーブルに登録されてしまいますから、<br>wp-login.php からログインできてしまいます。その結果、プロフィールの編集はともかくとして、ダッシュボードも閲覧できてしまいます。</p>



<p class="wp-block-paragraph">　調べてみると、このプラグインでは Profiles など各種機能は有償の別エクステンションとなっているようでした。そのため、有償エクステンションなしではそれほど凝った管理方法になっていない可能性があります。次回は Simple Membership など、プロフィール登録機能がついているといわれているプラグインなどを参考 WordPressプラグインによる会員サイト構築のやりかたについて考察を進めていきます。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
