<?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>プラグイン &#8211; WordPress Memo</title>
	<atom:link href="https://blog.riverforest-wp.info/tag/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.riverforest-wp.info</link>
	<description>WordPress に関する覚え書き</description>
	<lastBuildDate>Wed, 12 Nov 2025 22:11:50 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.riverforest-wp.info/wp-content/uploads/2018/05/cropped-icon-256x256-1-32x32.png</url>
	<title>プラグイン &#8211; WordPress Memo</title>
	<link>https://blog.riverforest-wp.info</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>プラグインとシェルスクリプトで静的生成サイトの構築</title>
		<link>https://blog.riverforest-wp.info/static-site-generator/</link>
		
		<dc:creator><![CDATA[Katsushi Kawamori]]></dc:creator>
		<pubDate>Sun, 11 May 2025 00:29:42 +0000</pubDate>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[サイト構築]]></category>
		<category><![CDATA[シェルスクリプト]]></category>
		<category><![CDATA[プラグイン]]></category>
		<category><![CDATA[静的化]]></category>
		<guid isPermaLink="false">https://blog.riverforest-wp.info/?p=4069</guid>

					<description><![CDATA[はじめに 先日、静的生成サイトを構築するプラグインを出しました。その補完として、そのプラグインを利用したサイト構築のためのシェルスクリプトを掲載します。このプラグインは、WP-CLI でのみ動作します。 このブログは、こ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">はじめに</h3>



<p>先日、静的生成サイトを構築するプラグインを出しました。その補完として、そのプラグインを利用したサイト構築のためのシェルスクリプトを掲載します。このプラグインは、WP-CLI でのみ動作します。</p>



<div class="pluginstatsview-card-wrap">
	<div>
		<img decoding="async" src="https://ps.w.org/static-site-generator/assets/icon-256x256.png?rev=3260419" alt="Static Site Generator のアイコン" class="pluginstatsview-card-icon" />
		<div class="pluginstatsview-after-icon">
			<div class="pluginstatsview-bold"><a href="https://wordpress.org/plugins/static-site-generator/" class="pluginstatsview-astyle">Static Site Generator</a></div>
			<div class="pluginstatsview-small">静的サイトを生成します。</div>
			<div class="pluginstatsview-small">作者: <a href="https://profiles.wordpress.org/katsushi-kawamori/">Katsushi Kawamori</a></div>
			<div style="clear: both;"></div>
		</div>
	</div>
	<div style="clear: both;"></div>

	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left"><a href="https://wordpress.org/plugins/static-site-generator/#reviews" title="0.0(5点満点中)" class="pluginstatsview-astyle">	<span class="pluginstatsview-stars">
					<span class="dashicons dashicons-star-empty"></span><span class="dashicons dashicons-star-empty"></span><span class="dashicons dashicons-star-empty"></span><span class="dashicons dashicons-star-empty"></span><span class="dashicons dashicons-star-empty"></span>
			</span>
	</a>(0)</span>
		<span class="pluginstatsview-card-right">最終更新: 3週間 前</span>
	</div>
	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left">1,119ダウンロード</span>
		<span class="pluginstatsview-card-right">検証済み: 7.0</span>
	</div>
	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left">ダウンロード: <a href="https://downloads.wordpress.org/plugin/static-site-generator.2.04.zip" class="dashicons dashicons-download pluginstatsview-download"></a></span>
		<span class="pluginstatsview-card-right">リリース: 2025-03-23</span>
	</div>
	<div class="pluginstatsview-small pluginstatsview-card-center">
		2026-04-21 08:56 時点の統計	</div>
</div>



<p>このブログは、このプラグインとシェルスクリプトで静的サイトになっており、WordPress の本体、データベースは取り除かれていて、この記事もテスト環境側の WordPress で書かれています。静的サイトだと、ブログのコメントが出来なくなりますが、ブログのコメントは、SNS 上で記事をシェアした際に、SNS 上で付くコメントの方が多いので、必要を感じません。また、コンタクトフォームは自前のものを、php で用意し、記事中に、<code class="language-php language-html">iframe</code> タグで埋め込みました。</p>



<h3 class="wp-block-heading">要件</h3>



<ol class="wp-block-list">
<li>ローカル開発者環境で、WP-CLI がインストールされており、コマンドプロンプトでシェルスクリプト（#!/bin/sh）が使える事。</li>



<li>ローカル開発者環境と、リモートステージング環境が、SSH で繋がっている事（rsync コマンド利用の為）。</li>



<li>パーマリンクの URL の設定が、トレイリングスラッシュである事。このプラグインは、URL の末尾にパラメータが付いていたり、トレイリングスラッシュが無いと動作を辞め生成しません。</li>



<li>このプラグインはトレイリングスラッシュ以下に、ファイルを生成します。そのファイルを以下に記します。
<ul class="wp-block-list">
<li><code class="language-php language-html">index.html</code> &#8211; html のファイルです。</li>



<li><code class="language-php language-html">index.xml</code> &#8211; フィードのファイルです。</li>



<li><code class="language-php language-html">.htaccess</code> &#8211; <code class="language-php language-html">index.xml</code> と同じ場所に生成します。<code class="language-php language-html">index.xml</code> を認識させるために、<code class="language-php language-html">DirectoryIndex index.xml</code> とだけ書いてあります。Apache2 サーバーのみ使用可能なので、nginx などの他のサーバーの場合は、<code class="language-php language-html">index.xml</code> が認識するように対処してください。</li>
</ul>
</li>



<li>リダイレクトがある場合には、生成しません。ただし、そのディレクトリは作成します。</li>
</ol>



<p class="has-text-align-left">※2 はあると便利ですが、ない場合には、FTP でのアップロードで代替えできます。</p>



<h3 class="wp-block-heading">コード</h3>



<pre class="prism line-numbers"><code class="language-php language-html">#!/bin/sh

# 引数の確認
if &#91; $# -lt 1 ]; then
	echo "使い方: $0 &#91;test|stage]"
	exit 1
fi

# 引数で環境を受け取る
env="$1"

# test WordPress サイト名
wp_site_name="blog.riverforest-wp.info"

# stage サイトディレクトリ名
stage_site_dir="dodesyo:~/public_html/blog.riverforest-wp.info/"

# 環境に応じた静的サイト名と出力ディレクトリを設定
case "$env" in
	test)
		static_site_name="static.riverforest.test"
		abs_path="/home/katsushi/www/$static_site_name"
		;;
	stage)
		static_site_name="blog.riverforest-wp.info"
		abs_path="/home/katsushi/static-temp/$static_site_name"
		;;
	*)
		echo "不正な環境指定です。test、または stage を指定してください。"
		exit 1
		;;
esac

# 静的サイト名のディレクトリを存在確認し、無ければ作成
if &#91; ! -d "$abs_path" ]; then
	mkdir "$abs_path"
	echo "ディレクトリが無いので作成しました: $abs_path"
fi

# Static Site Generator による生成
wp static "$abs_path" https://$static_site_name --cb1="$wp_site_name" --ca1="$static_site_name"

# Static Site Generator による image &amp; video sitemap のみの生成 
wp static "$abs_path" https://$static_site_name --cb1="$wp_site_name" --ca1="$static_site_name" --s --file1="feed/googleimagesitemap/index.xml" --orgurl1="https://$wp_site_name/feed/googleimagesitemap" --file2="feed/googlevideossitemap/index.xml" --orgurl2="https://$wp_site_name/feed/googlevideossitemap"

# 必要ファイル類のコピー wp-includes 関連
cp -f wp-includes/js/wp-emoji-release.min.js "$abs_path"/wp-includes/js
if &#91; ! -d "$abs_path"/wp-includes/images ]; then
	mkdir "$abs_path"/wp-includes/images
fi
cp -rf wp-includes/images/media "$abs_path"/wp-includes/images

# 必要ファイル類のコピー インストールプラグイン関連
cp -rf wp-content/plugins/cookie-law-info/lite/frontend/images "$abs_path"/wp-content/plugins/cookie-law-info/lite/frontend/images
cp -rf wp-content/plugins/riverforest-function/icomoon/fonts "$abs_path"/wp-content/plugins/riverforest-function/icomoon/fonts
if &#91; ! -d "$abs_path"/wp-content/plugins/media-sitemap ]; then
	mkdir "$abs_path"/wp-content/plugins/media-sitemap
fi
cp -rf wp-content/plugins/media-sitemap/xsl "$abs_path"/wp-content/plugins/media-sitemap/xsl

# 必要ファイル類のコピー カスタム php スクリプト（コンタクトフォーム）関連
cp -rf custom "$abs_path"

# xmlrpc.php の削除
rm -f xmlrpc.php

if &#91; "$env" = "stage" ]; then
	echo "ホスト側と rsync で同期を開始します"
	rsync -avz -e ssh "$abs_path"/ "$stage_site_dir"
	echo "ホスト側と rsync で同期を終了しました"
	# ローカルホストの静的ファイルをディレクトリごと全て削除
	rm -rf $abs_path
fi

exit
</code></pre>



<h3 class="wp-block-heading">使い方＆解説</h3>



<p>シェルスクリプト名が、<code class="language-php language-html">static.sh</code> だとして、引数を指定します。引数は <code class="language-php language-html">test</code> か、<code class="language-php language-html">stage</code> のどちらかです。</p>



<ul class="wp-block-list">
<li>引数 <code class="language-php language-html">test</code>  ：ローカル環境にファイルを作成</li>



<li>引数 <code class="language-php language-html">stage</code> ：ローカル環境に一時的にファイルを作成し、リモートステージング環境にファイルをコピー。</li>
</ul>



<h4 class="wp-block-heading">動作</h4>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69e6bfac7309c&quot;}" data-wp-interactive="core/image" data-wp-key="69e6bfac7309c" class="wp-block-image size-large wp-lightbox-container"><img fetchpriority="high" loading="eager" decoding="async" width="1024" height="542" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://blog.riverforest-wp.info/wp-content/uploads/20250511/terminal-1024x542.png" alt="" class="wp-image-4108" srcset="https://blog.riverforest-wp.info/wp-content/uploads/20250511/terminal-1024x542.png 1024w, https://blog.riverforest-wp.info/wp-content/uploads/20250511/terminal-300x159.png 300w, https://blog.riverforest-wp.info/wp-content/uploads/20250511/terminal-768x406.png 768w, https://blog.riverforest-wp.info/wp-content/uploads/20250511/terminal.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="拡大する"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<h4 class="wp-block-heading">解説</h4>



<ul class="wp-block-list">
<li>１３行：テスト環境の WordPress のサイト名。</li>



<li>１６行：ステージング環境の WordPress のディレクトリ名、正確には、<code class="language-php language-html">.ssh</code> の、<code class="language-php language-html">config</code> ファイルに書いた、host 名(<code class="language-php language-html">dodesyo:</code>)とディレクトリ名(<code class="language-php language-html">~/public_html/blog.riverforest-wp.info/</code>)になります。</li>



<li>２１行ー２２行：テスト環境のサイト名と、サイトディレクトリ名。</li>



<li>２５行ー２６行：ステージング環境のサイト名と、サイトディレクトリ名。</li>



<li>４１行：プラグインのコマンド。<code class="language-php language-html"> --cb1</code> オプションは、変更する前（テスト環境）のサイト名、<code class="language-php language-html">--ca1</code> オプションは、変更後（静的サイト）のサイト名。</li>



<li>４４行：プラグインのコマンド。 <code class="language-php language-html">--s</code> オプションは、<code class="language-php language-html">--file</code> <code class="language-php language-html">--orgurl</code> オプションの作業だけ行うの意味。<a href="https://ja.wordpress.org/plugins/media-sitemap/" target="_blank" rel="noreferrer noopener">Media Sitemap for Google</a> というプラグインの生成するサイトマップを生成するためのもの。</li>



<li>４７行ー５１行：WordPress の本体のファイルが必要な場合にコピー。</li>



<li>５４行：<a href="https://ja.wordpress.org/plugins/cookie-law-info/" target="_blank" rel="noreferrer noopener">CookieYes</a> というプラグインで必要なものをコピー。</li>



<li>５５行：このサイトで必要な処理を自身でプラグイン化したもので必要なものをコピー。</li>



<li>５６行ー５９行：<a href="https://ja.wordpress.org/plugins/media-sitemap/" target="_blank" rel="noreferrer noopener">Media Sitemap for Google</a> というプラグインで必要なものをコピー。</li>



<li>６２行：自身で php で作成した、コンタクトフォーム一式をコピー。</li>



<li>６５行：プラグインが、<code class="language-php language-html">xmlrpc.php</code> をコピーしてきてしまうので、削除。</li>



<li>６７行以降：rsync で、ステージング環境に出力するためのもの。FTP 等でコピーするなら不要。</li>
</ul>



<h3 class="wp-block-heading">この方法で静的化したサイト</h3>



<p>以下に、この方法で静的化したこのサイト以外の自分のサイトを示します。</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<style>
.simpleblogcard_img_block1c6425bbefcfecd79c254c116dec222a {
  float: right;
  padding: 10px;
}
.simpleblogcard_border1c6425bbefcfecd79c254c116dec222a {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_title1c6425bbefcfecd79c254c116dec222a {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_description1c6425bbefcfecd79c254c116dec222a {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://fbm.riverforest-wp.info/ja/fixed-bottom-menu-%e3%83%a9%e3%82%a4%e3%83%96/ target="_blank" rel="noopener">
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_border1c6425bbefcfecd79c254c116dec222a">
			fbm.riverforest-wp.info			<div class="simpleblogcard_title1c6425bbefcfecd79c254c116dec222a">
				Fixed Bottom Menu ライブ – WordPress Plugin Fixed Bottom Menu Live Site			</div>
							<div class="simpleblogcard_description1c6425bbefcfecd79c254c116dec222a">
					当サイトでは、プラグイン「Fixed Bottom Menu」のフィルターによるカスタマイズ例を紹介しています。「Twenty Twenty-Four」テーマを使用しています。 こ&#8230;				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<style>
.simpleblogcard_img_blockc4ee7354a6b6aba06c39a0c513c90af7 {
  float: right;
  padding: 10px;
}
.simpleblogcard_borderc4ee7354a6b6aba06c39a0c513c90af7 {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_titlec4ee7354a6b6aba06c39a0c513c90af7 {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_descriptionc4ee7354a6b6aba06c39a0c513c90af7 {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://riverforest-wp.info/ja/plugins-ja/ target="_blank" rel="noopener">
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_borderc4ee7354a6b6aba06c39a0c513c90af7">
			riverforest-wp.info			<div class="simpleblogcard_titlec4ee7354a6b6aba06c39a0c513c90af7">
				Riverforest Plugins – Introducing of WordPress plugins made by Katsushi Kawamori. And sales of add-ons.			</div>
							<div class="simpleblogcard_descriptionc4ee7354a6b6aba06c39a0c513c90af7">
					私は以下のプラグインを作成し、WordPress に貢献しています。				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<style>
.simpleblogcard_img_block42cb85857c3df32b5f95c0f7c4070f41 {
  float: right;
  padding: 10px;
}
.simpleblogcard_border42cb85857c3df32b5f95c0f7c4070f41 {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_title42cb85857c3df32b5f95c0f7c4070f41 {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_description42cb85857c3df32b5f95c0f7c4070f41 {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://compe-scoring.com/ja/compe-scoring-ja/ target="_blank" rel="noopener">
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_border42cb85857c3df32b5f95c0f7c4070f41">
			compe-scoring.com			<div class="simpleblogcard_title42cb85857c3df32b5f95c0f7c4070f41">
				Competition Scoring System – Competition Scoring System			</div>
							<div class="simpleblogcard_description42cb85857c3df32b5f95c0f7c4070f41">
					このサービスの特徴 このサービスは、競技会・コンクール・コンテストの採点システムです。 競技の初めから終わりまで、自動収集します。PCの前にいる必要はありません。競技が終わった後に&#8230;				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<style>
.simpleblogcard_img_block0e136fec2c6da8b80fa033d4b6075dbf {
  float: right;
  padding: 10px;
}
.simpleblogcard_border0e136fec2c6da8b80fa033d4b6075dbf {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_title0e136fec2c6da8b80fa033d4b6075dbf {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_description0e136fec2c6da8b80fa033d4b6075dbf {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://bdc-scoring.com/ja/ballroom-dance-competition-scoring-system-ja/ target="_blank" rel="noopener">
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_border0e136fec2c6da8b80fa033d4b6075dbf">
			bdc-scoring.com			<div class="simpleblogcard_title0e136fec2c6da8b80fa033d4b6075dbf">
				Ballroom dance competition Scoring System			</div>
							<div class="simpleblogcard_description0e136fec2c6da8b80fa033d4b6075dbf">
					このサービスの特徴 このサービスは、ボールルームダンス競技会の採点システムです。兄弟版サービスの競技会採点システムは以下からお入りください。 競技会採点システム ここで記されるボー&#8230;				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<style>
.simpleblogcard_img_block3f8753164fef112a02d620677c3b4a8f {
  float: right;
  padding: 10px;
}
.simpleblogcard_border3f8753164fef112a02d620677c3b4a8f {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_title3f8753164fef112a02d620677c3b4a8f {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_description3f8753164fef112a02d620677c3b4a8f {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://pt-syncer.riverforest-wp.info/>
				<figure class="simpleblogcard_img_block3f8753164fef112a02d620677c3b4a8f">
			<img decoding="async" style="border-radius: 5px; width: 100px; height: 100px;" src="https://pt-syncer.riverforest-wp.info/wp-content/uploads/2025/10/icon-300x300.png" alt="PT-Syncer – パーソナルトレーニング向け管理アプリ。QRでチケット管理、Googleカレンダーで予定確認。" />
		</figure>
		<div class="simpleblogcard_inner">
		<div class="simpleblogcard_border3f8753164fef112a02d620677c3b4a8f">
			pt-syncer.riverforest-wp.info			<div class="simpleblogcard_title3f8753164fef112a02d620677c3b4a8f">
				PT-Syncer – パーソナルトレーニング向け管理アプリ。QRでチケット管理、Googleカレンダーで予定確認。			</div>
							<div class="simpleblogcard_description3f8753164fef112a02d620677c3b4a8f">
					PT-Syncer / PT-Syncer Mini ** PT-Syncer（Personal Training Sync）** パーソナルトレーニングや個人レッスン向けのチケッ&#8230;				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"></div>
</div>



<h3 class="wp-block-heading">終わりに</h3>



<p>静的サイトにしてみて、表示が早くなったのを実感します。また、セキュリティ的な圧力から解放されます。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>プラグインディレクトリでの Live Preview の有効化</title>
		<link>https://blog.riverforest-wp.info/live-preview/</link>
		
		<dc:creator><![CDATA[Katsushi Kawamori]]></dc:creator>
		<pubDate>Tue, 18 Jun 2024 00:59:34 +0000</pubDate>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Live Preview]]></category>
		<category><![CDATA[プラグイン]]></category>
		<guid isPermaLink="false">https://blog.riverforest-wp.info/?p=3854</guid>

					<description><![CDATA[はじめに ブラウザだけで動作する WordPress 「Playground」が、昨年辺りから利用できるようになりました。それを利用して、公式プラグインディレクトリや公式テーマディレクトリで「Live Preview」が [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">はじめに</h3>



<p>ブラウザだけで動作する WordPress 「Playground」が、昨年辺りから利用できるようになりました。それを利用して、公式プラグインディレクトリや公式テーマディレクトリで「Live Preview」が可能になっています。今回は、公式プラグインディレクトリで「Live Preview」を可能にするためにプラグイン作者向けに書きました。</p>



<style>
.simpleblogcard_img_block6d7643125bd6228faf58efe263acc1cf {
  float: right;
  padding: 10px;
}
.simpleblogcard_border6d7643125bd6228faf58efe263acc1cf {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_title6d7643125bd6228faf58efe263acc1cf {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_description6d7643125bd6228faf58efe263acc1cf {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://wordpress.org/playground/ target="_blank" rel="noopener">
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_border6d7643125bd6228faf58efe263acc1cf">
			wordpress.org			<div class="simpleblogcard_title6d7643125bd6228faf58efe263acc1cf">
				WordPress Playground			</div>
							<div class="simpleblogcard_description6d7643125bd6228faf58efe263acc1cf">
									</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>



<h3 class="wp-block-heading">プラグインディレクトリにログイン</h3>



<p>ログインして、「Advanced View」に移動し、最下部に移動すると、「Toggle Live Preview」という欄があります。<code class="language-php language-html">blueprint.json</code> というファイルがコミットされていないと、「Live Preview」 を有効化するボタンが表示されていません。</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69e6bfac74e60&quot;}" data-wp-interactive="core/image" data-wp-key="69e6bfac74e60" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="314" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="3866" src="https://blog.riverforest-wp.info/wp-content/uploads/20240618/Default-Advanced-View-1024x314.png" alt="" class="wp-image-3866" srcset="https://blog.riverforest-wp.info/wp-content/uploads/20240618/Default-Advanced-View-1024x314.png 1024w, https://blog.riverforest-wp.info/wp-content/uploads/20240618/Default-Advanced-View-300x92.png 300w, https://blog.riverforest-wp.info/wp-content/uploads/20240618/Default-Advanced-View-768x236.png 768w, https://blog.riverforest-wp.info/wp-content/uploads/20240618/Default-Advanced-View.png 1274w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="拡大する"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69e6bfac75440&quot;}" data-wp-interactive="core/image" data-wp-key="69e6bfac75440" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" width="805" height="489" data-id="3871" src="https://blog.riverforest-wp.info/wp-content/uploads/20240618/toggle-live-preview1.png" alt="" class="wp-image-3871" srcset="https://blog.riverforest-wp.info/wp-content/uploads/20240618/toggle-live-preview1.png 805w, https://blog.riverforest-wp.info/wp-content/uploads/20240618/toggle-live-preview1-300x182.png 300w, https://blog.riverforest-wp.info/wp-content/uploads/20240618/toggle-live-preview1-768x467.png 768w" sizes="auto, (max-width: 805px) 100vw, 805px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="拡大する"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</figure>



<h3 class="wp-block-heading">設定ファイルの編集とコミット</h3>



<p>例として、自分のプラグインの <a href="https://ja.wordpress.org/plugins/fixed-bottom-menu/" target="_blank" rel="noreferrer noopener"><strong>Fixed Bottom Menu</strong></a> の「<strong>blueprint.json</strong>」を以下に記します。</p>



<pre class="prism line-numbers"><code class="language-php language-html">{
    "landingPage": "\/wp-admin\/admin.php?page=fixedbottommenu",
    "preferredVersions": {
        "php": "8.0",
        "wp": "6.6"
    },
	"login": true,
	"plugins": &#91;"fixed-bottom-menu"]
}</code></pre>



<p>プラグインをインストール、有効化し、プラグインの設定画面を表示する設定になっています。詳しくは、以下をご覧ください。</p>



<style>
.simpleblogcard_img_block20cb215d14284ee08c57b8da4a7d2ec2 {
  float: right;
  padding: 10px;
}
.simpleblogcard_border20cb215d14284ee08c57b8da4a7d2ec2 {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_title20cb215d14284ee08c57b8da4a7d2ec2 {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_description20cb215d14284ee08c57b8da4a7d2ec2 {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://developer.wordpress.org/plugins/wordpress-org/previews-and-blueprints/ target="_blank" rel="noopener">
				<figure class="simpleblogcard_img_block20cb215d14284ee08c57b8da4a7d2ec2">
			<img decoding="async" style="border-radius: 5px; width: 100px; height: 52px;" src="https://developer.wordpress.org/wp-content/themes/wporg-developer-2023/images/opengraph-image.png" alt="Previews and Blueprints – Plugin Handbook | Developer.WordPress.org" />
		</figure>
		<div class="simpleblogcard_inner">
		<div class="simpleblogcard_border20cb215d14284ee08c57b8da4a7d2ec2">
			developer.wordpress.org			<div class="simpleblogcard_title20cb215d14284ee08c57b8da4a7d2ec2">
				Previews and Blueprints – Plugin Handbook | Developer.WordPress.org			</div>
							<div class="simpleblogcard_description20cb215d14284ee08c57b8da4a7d2ec2">
					If you haven’t noticed it yet, the WordPress Playground is an amazing feature that lets an&#8230;				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>



<p>また、「<strong>blueprint.json</strong>」の設定例が以下から参照できます。</p>



<style>
.simpleblogcard_img_block6526ec5ba6f30a46bd895dca1e8c7be6 {
  float: right;
  padding: 10px;
}
.simpleblogcard_border6526ec5ba6f30a46bd895dca1e8c7be6 {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_title6526ec5ba6f30a46bd895dca1e8c7be6 {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_description6526ec5ba6f30a46bd895dca1e8c7be6 {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://github.com/WordPress/blueprints/tree/trunk/blueprints>
				<figure class="simpleblogcard_img_block6526ec5ba6f30a46bd895dca1e8c7be6">
			<img decoding="async" style="border-radius: 5px; width: 100px; height: 50px;" src="https://opengraph.githubassets.com/c49770d1cec58c309cfa72b9737df922c97032eb62f98c3107f4802df9fce905/WordPress/blueprints" alt="blueprints/blueprints at trunk · WordPress/blueprints · GitHub" />
		</figure>
		<div class="simpleblogcard_inner">
		<div class="simpleblogcard_border6526ec5ba6f30a46bd895dca1e8c7be6">
			github.com			<div class="simpleblogcard_title6526ec5ba6f30a46bd895dca1e8c7be6">
				blueprints/blueprints at trunk · WordPress/blueprints · GitHub			</div>
							<div class="simpleblogcard_description6526ec5ba6f30a46bd895dca1e8c7be6">
					Blueprints gallery and examples. Contribute to WordPress/blueprints development by creatin&#8230;				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>



<p>その他に一番使う設定として、管理画面を日本語で読み込む例を以下に示します。</p>



<pre class="prism line-numbers"><code class="language-php language-html">{
    "landingPage": "\/wp-admin\/",
　　"login": true,
    "steps": &#91;
		{
			"step": "setSiteLanguage",
			"language": "ja"
		}
    ]
}</code></pre>



<p>「<strong>blueprint.json</strong>」の編集を終えたら、プラグインディレクトリにコミットします。コミット場所は、<code class="language-php language-html">/assets/blueprints/blueprint.json</code> です。</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69e6bfac75cf9&quot;}" data-wp-interactive="core/image" data-wp-key="69e6bfac75cf9" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" width="635" height="302" data-id="3867" src="https://blog.riverforest-wp.info/wp-content/uploads/20240618/folder1.png" alt="" class="wp-image-3867" srcset="https://blog.riverforest-wp.info/wp-content/uploads/20240618/folder1.png 635w, https://blog.riverforest-wp.info/wp-content/uploads/20240618/folder1-300x143.png 300w" sizes="auto, (max-width: 635px) 100vw, 635px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="拡大する"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69e6bfac762f8&quot;}" data-wp-interactive="core/image" data-wp-key="69e6bfac762f8" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" width="649" height="259" data-id="3868" src="https://blog.riverforest-wp.info/wp-content/uploads/20240618/folder2.png" alt="" class="wp-image-3868" srcset="https://blog.riverforest-wp.info/wp-content/uploads/20240618/folder2.png 649w, https://blog.riverforest-wp.info/wp-content/uploads/20240618/folder2-300x120.png 300w" sizes="auto, (max-width: 649px) 100vw, 649px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="拡大する"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</figure>



<h3 class="wp-block-heading">プラグインディレクトリでの操作</h3>



<p>コミット後に、ログインして、「Download」の横に「Test Preview」ボタンが出現します。ボタンを押すとテストできます。</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69e6bfac76984&quot;}" data-wp-interactive="core/image" data-wp-key="69e6bfac76984" class="wp-block-image aligncenter size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="282" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://blog.riverforest-wp.info/wp-content/uploads/20240618/test-preview-1024x282.png" alt="" class="wp-image-3870" srcset="https://blog.riverforest-wp.info/wp-content/uploads/20240618/test-preview-1024x282.png 1024w, https://blog.riverforest-wp.info/wp-content/uploads/20240618/test-preview-300x83.png 300w, https://blog.riverforest-wp.info/wp-content/uploads/20240618/test-preview-768x212.png 768w, https://blog.riverforest-wp.info/wp-content/uploads/20240618/test-preview.png 1336w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="拡大する"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<p>テストして問題が無ければ、「Advanced View」に移動し、最下部に移動し、「Toggle Live Preview」のボタンを押すと、「Live Preview」が有効化されます。</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69e6bfac76fd4&quot;}" data-wp-interactive="core/image" data-wp-key="69e6bfac76fd4" class="wp-block-image aligncenter size-full wp-lightbox-container"><img loading="lazy" decoding="async" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" width="804" height="566" src="https://blog.riverforest-wp.info/wp-content/uploads/20240618/toggle-live-preview2.png" alt="" class="wp-image-3872" srcset="https://blog.riverforest-wp.info/wp-content/uploads/20240618/toggle-live-preview2.png 804w, https://blog.riverforest-wp.info/wp-content/uploads/20240618/toggle-live-preview2-300x211.png 300w, https://blog.riverforest-wp.info/wp-content/uploads/20240618/toggle-live-preview2-768x541.png 768w" sizes="auto, (max-width: 804px) 100vw, 804px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="拡大する"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69e6bfac775ee&quot;}" data-wp-interactive="core/image" data-wp-key="69e6bfac775ee" class="wp-block-image aligncenter size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="343" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://blog.riverforest-wp.info/wp-content/uploads/20240618/live-preview-1024x343.png" alt="" class="wp-image-3869" srcset="https://blog.riverforest-wp.info/wp-content/uploads/20240618/live-preview-1024x343.png 1024w, https://blog.riverforest-wp.info/wp-content/uploads/20240618/live-preview-300x101.png 300w, https://blog.riverforest-wp.info/wp-content/uploads/20240618/live-preview-768x258.png 768w, https://blog.riverforest-wp.info/wp-content/uploads/20240618/live-preview.png 1264w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="拡大する"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<h3 class="wp-block-heading">実際の動作</h3>



<figure class="wp-block-video aligncenter"><video height="720" style="aspect-ratio: 1280 / 720;" width="1280" controls muted src="https://blog.riverforest-wp.info/wp-content/uploads/20240618/live-preview.mp4"></video></figure>



<h3 class="wp-block-heading">おわりに</h3>



<p>「Live Preview」は、プラグインの更新とは独立してオン・オフできるので、用途や更新内容に合わせて適宜オン・オフできるのが便利ですね。</p>
]]></content:encoded>
					
		
		<enclosure url="https://blog.riverforest-wp.info/wp-content/uploads/20240618/live-preview.mp4" length="7123488" type="video/mp4" />

			</item>
		<item>
		<title>プラグインのクローズ</title>
		<link>https://blog.riverforest-wp.info/closed-plugins/</link>
		
		<dc:creator><![CDATA[Katsushi Kawamori]]></dc:creator>
		<pubDate>Wed, 21 Jun 2023 23:43:54 +0000</pubDate>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[クローズ]]></category>
		<category><![CDATA[プラグイン]]></category>
		<guid isPermaLink="false">https://blog.riverforest-wp.info/?p=3336</guid>

					<description><![CDATA[はじめに 以前からアナウンスしていたように、下記の公式プラグインディレクトリ内の１５個のプラグインをクローズしました。Media from FTP だけは、利用者が多くプラグインチームと連絡を取り合ってクローズしなければ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">はじめに</h3>



<p>以前からアナウンスしていたように、下記の公式プラグインディレクトリ内の<strong>１５個のプラグイン</strong>をクローズしました。<strong>Media from FTP</strong> だけは、利用者が多くプラグインチームと連絡を取り合ってクローズしなければならないようで、現在プラグインチームは忙しそうなので連絡をとりませんでした。<strong>Media from FTP</strong> 内に代替えプラグインの <strong>Bulk Media Register</strong> のリンクが貼ってあるので、<strong>Media from FTP</strong> の有効インストール数が１万以下まで減ったら自分でクローズしようと思っています。</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<style>
.simpleblogcard_img_blocka6109167aacb245c2e58412ebe3656e5 {
  float: right;
  padding: 10px;
}
.simpleblogcard_bordera6109167aacb245c2e58412ebe3656e5 {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_titlea6109167aacb245c2e58412ebe3656e5 {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_descriptiona6109167aacb245c2e58412ebe3656e5 {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://ja.wordpress.org/plugins/media-from-ftp/>
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_bordera6109167aacb245c2e58412ebe3656e5">
			ja.wordpress.org			<div class="simpleblogcard_titlea6109167aacb245c2e58412ebe3656e5">
				Media from FTP – WordPress プラグイン | WordPress.org 日本語			</div>
							<div class="simpleblogcard_descriptiona6109167aacb245c2e58412ebe3656e5">
					FTPでアップロードされたファイルからメディアライブラリに登録します。				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<div class="pluginstatsview-card-wrap">
	<div>
		<img decoding="async" src="https://ps.w.org/bulk-media-register/assets/icon-256x256.png?rev=2316228" alt="Bulk Media Register のアイコン" class="pluginstatsview-card-icon" />
		<div class="pluginstatsview-after-icon">
			<div class="pluginstatsview-bold"><a href="https://wordpress.org/plugins/bulk-media-register/" class="pluginstatsview-astyle">Bulk Media Register</a></div>
			<div class="pluginstatsview-small">サーバー上のファイルをメディアライブラリに一括登録します。</div>
			<div class="pluginstatsview-small">作者: <a href="https://profiles.wordpress.org/katsushi-kawamori/">Katsushi Kawamori</a></div>
			<div style="clear: both;"></div>
		</div>
	</div>
	<div style="clear: both;"></div>

	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left"><a href="https://wordpress.org/plugins/bulk-media-register/#reviews" title="4.5(5点満点中)" class="pluginstatsview-astyle">	<span class="pluginstatsview-stars">
					<span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-half"></span>
			</span>
	</a>(22)</span>
		<span class="pluginstatsview-card-right">最終更新: 3週間 前</span>
	</div>
	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left">8,000以上サイトで有効化中</span>
		<span class="pluginstatsview-card-right">検証済み: 7.0</span>
	</div>
	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left">ダウンロード: <a href="https://downloads.wordpress.org/plugin/bulk-media-register.1.41.zip" class="dashicons dashicons-download pluginstatsview-download"></a></span>
		<span class="pluginstatsview-card-right">リリース: 2020-06-01</span>
	</div>
	<div class="pluginstatsview-small pluginstatsview-card-center">
		2026-04-21 08:56 時点の統計	</div>
</div>
</div>
</div>



<h3 class="wp-block-heading">クローズしたプラグイン</h3>



<style>
.simpleblogcard_img_block248f8d8a00394619b30d61d6976c8eea {
  float: right;
  padding: 10px;
}
.simpleblogcard_border248f8d8a00394619b30d61d6976c8eea {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_title248f8d8a00394619b30d61d6976c8eea {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_description248f8d8a00394619b30d61d6976c8eea {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://wordpress.org/plugins/add-multiple-user/>
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_border248f8d8a00394619b30d61d6976c8eea">
			wordpress.org			<div class="simpleblogcard_title248f8d8a00394619b30d61d6976c8eea">
				Add Multiple User – WordPress plugin | WordPress.org			</div>
							<div class="simpleblogcard_description248f8d8a00394619b30d61d6976c8eea">
					Add multiple users in bulk.				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>



<style>
.simpleblogcard_img_blockb6dc4e509f6bcb070d21f590d0d7afd2 {
  float: right;
  padding: 10px;
}
.simpleblogcard_borderb6dc4e509f6bcb070d21f590d0d7afd2 {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_titleb6dc4e509f6bcb070d21f590d0d7afd2 {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_descriptionb6dc4e509f6bcb070d21f590d0d7afd2 {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://wordpress.org/plugins/discount-feed-woocommerce/>
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_borderb6dc4e509f6bcb070d21f590d0d7afd2">
			wordpress.org			<div class="simpleblogcard_titleb6dc4e509f6bcb070d21f590d0d7afd2">
				Discount Feed WooCommerce – WordPress plugin | WordPress.org			</div>
							<div class="simpleblogcard_descriptionb6dc4e509f6bcb070d21f590d0d7afd2">
					Create a discount feed for WooCommerce.				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>



<style>
.simpleblogcard_img_block0ebee11f9a59b05e64e530b622e47b2a {
  float: right;
  padding: 10px;
}
.simpleblogcard_border0ebee11f9a59b05e64e530b622e47b2a {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_title0ebee11f9a59b05e64e530b622e47b2a {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_description0ebee11f9a59b05e64e530b622e47b2a {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://wordpress.org/plugins/extend-media-upload/>
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_border0ebee11f9a59b05e64e530b622e47b2a">
			wordpress.org			<div class="simpleblogcard_title0ebee11f9a59b05e64e530b622e47b2a">
				Extend Media Upload – WordPress plugin | WordPress.org			</div>
							<div class="simpleblogcard_description0ebee11f9a59b05e64e530b622e47b2a">
					Add folder specification and date time specification to the media uploader.				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>



<style>
.simpleblogcard_img_block8e62b05e9fb92e15b6e3ea8d1ef05104 {
  float: right;
  padding: 10px;
}
.simpleblogcard_border8e62b05e9fb92e15b6e3ea8d1ef05104 {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_title8e62b05e9fb92e15b6e3ea8d1ef05104 {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_description8e62b05e9fb92e15b6e3ea8d1ef05104 {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://wordpress.org/plugins/free-canvas/>
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_border8e62b05e9fb92e15b6e3ea8d1ef05104">
			wordpress.org			<div class="simpleblogcard_title8e62b05e9fb92e15b6e3ea8d1ef05104">
				Free Canvas – WordPress plugin | WordPress.org			</div>
							<div class="simpleblogcard_description8e62b05e9fb92e15b6e3ea8d1ef05104">
					Provide a canvas. Various cooperation is possible by shortcode and filter.				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>



<style>
.simpleblogcard_img_block47f979934720d8735905a66497e748ee {
  float: right;
  padding: 10px;
}
.simpleblogcard_border47f979934720d8735905a66497e748ee {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_title47f979934720d8735905a66497e748ee {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_description47f979934720d8735905a66497e748ee {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://wordpress.org/plugins/hooks-view/>
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_border47f979934720d8735905a66497e748ee">
			wordpress.org			<div class="simpleblogcard_title47f979934720d8735905a66497e748ee">
				Hooks View – WordPress plugin | WordPress.org			</div>
							<div class="simpleblogcard_description47f979934720d8735905a66497e748ee">
					Displays the hooks.				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>



<style>
.simpleblogcard_img_block55a4add75d97c79f054e0732b5712511 {
  float: right;
  padding: 10px;
}
.simpleblogcard_border55a4add75d97c79f054e0732b5712511 {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_title55a4add75d97c79f054e0732b5712511 {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_description55a4add75d97c79f054e0732b5712511 {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://wordpress.org/plugins/organize-media-library/>
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_border55a4add75d97c79f054e0732b5712511">
			wordpress.org			<div class="simpleblogcard_title55a4add75d97c79f054e0732b5712511">
				Organize Media Library by Folders – WordPress plugin | WordPress.org			</div>
							<div class="simpleblogcard_description55a4add75d97c79f054e0732b5712511">
					Organize Media Library by Folders. URL in the content, replace with the new URL.				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>



<style>
.simpleblogcard_img_block573611cf80b6595fa5b08348b48d1a73 {
  float: right;
  padding: 10px;
}
.simpleblogcard_border573611cf80b6595fa5b08348b48d1a73 {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_title573611cf80b6595fa5b08348b48d1a73 {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_description573611cf80b6595fa5b08348b48d1a73 {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://wordpress.org/plugins/password-string-generator/>
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_border573611cf80b6595fa5b08348b48d1a73">
			wordpress.org			<div class="simpleblogcard_title573611cf80b6595fa5b08348b48d1a73">
				Password String Generator – WordPress plugin | WordPress.org			</div>
							<div class="simpleblogcard_description573611cf80b6595fa5b08348b48d1a73">
					Specifies a password generation string.				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>



<style>
.simpleblogcard_img_block0611ca6e70798256835b7f2a0f8e5a55 {
  float: right;
  padding: 10px;
}
.simpleblogcard_border0611ca6e70798256835b7f2a0f8e5a55 {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_title0611ca6e70798256835b7f2a0f8e5a55 {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_description0611ca6e70798256835b7f2a0f8e5a55 {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://wordpress.org/plugins/post-date-time-change/>
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_border0611ca6e70798256835b7f2a0f8e5a55">
			wordpress.org			<div class="simpleblogcard_title0611ca6e70798256835b7f2a0f8e5a55">
				Post Date Time Change – WordPress plugin | WordPress.org			</div>
							<div class="simpleblogcard_description0611ca6e70798256835b7f2a0f8e5a55">
					Collectively change the date and time of each article of post or page or media library.				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>



<style>
.simpleblogcard_img_block27f660516ac4d7574ea4c62dc76855cc {
  float: right;
  padding: 10px;
}
.simpleblogcard_border27f660516ac4d7574ea4c62dc76855cc {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_title27f660516ac4d7574ea4c62dc76855cc {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_description27f660516ac4d7574ea4c62dc76855cc {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://wordpress.org/plugins/simple-nivoslider/>
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_border27f660516ac4d7574ea4c62dc76855cc">
			wordpress.org			<div class="simpleblogcard_title27f660516ac4d7574ea4c62dc76855cc">
				Simple NivoSlider – WordPress plugin | WordPress.org			</div>
							<div class="simpleblogcard_description27f660516ac4d7574ea4c62dc76855cc">
					Integrates NivoSlider into WordPress.				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>



<style>
.simpleblogcard_img_blockbb03f33ce3f5bb37553bdae0bdef2b26 {
  float: right;
  padding: 10px;
}
.simpleblogcard_borderbb03f33ce3f5bb37553bdae0bdef2b26 {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_titlebb03f33ce3f5bb37553bdae0bdef2b26 {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_descriptionbb03f33ce3f5bb37553bdae0bdef2b26 {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://wordpress.org/plugins/simple-paypal-payment/>
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_borderbb03f33ce3f5bb37553bdae0bdef2b26">
			wordpress.org			<div class="simpleblogcard_titlebb03f33ce3f5bb37553bdae0bdef2b26">
				Simple PayPal Payment – WordPress plugin | WordPress.org			</div>
							<div class="simpleblogcard_descriptionbb03f33ce3f5bb37553bdae0bdef2b26">
					Integrates PayPal checkout into WordPress.				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>



<style>
.simpleblogcard_img_block18ab0415176c7d1ec6e2ec0018dd78f1 {
  float: right;
  padding: 10px;
}
.simpleblogcard_border18ab0415176c7d1ec6e2ec0018dd78f1 {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_title18ab0415176c7d1ec6e2ec0018dd78f1 {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_description18ab0415176c7d1ec6e2ec0018dd78f1 {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://wordpress.org/plugins/simple-posts-order/>
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_border18ab0415176c7d1ec6e2ec0018dd78f1">
			wordpress.org			<div class="simpleblogcard_title18ab0415176c7d1ec6e2ec0018dd78f1">
				Simple Posts Order – WordPress plugin | WordPress.org			</div>
							<div class="simpleblogcard_description18ab0415176c7d1ec6e2ec0018dd78f1">
					Sort the posts order.				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>



<style>
.simpleblogcard_img_block5c31d8c8acb1822142fa4fc0ff47d269 {
  float: right;
  padding: 10px;
}
.simpleblogcard_border5c31d8c8acb1822142fa4fc0ff47d269 {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_title5c31d8c8acb1822142fa4fc0ff47d269 {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_description5c31d8c8acb1822142fa4fc0ff47d269 {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://wordpress.org/plugins/simple-stripe-payment/>
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_border5c31d8c8acb1822142fa4fc0ff47d269">
			wordpress.org			<div class="simpleblogcard_title5c31d8c8acb1822142fa4fc0ff47d269">
				Simple Stripe Payment – WordPress plugin | WordPress.org			</div>
							<div class="simpleblogcard_description5c31d8c8acb1822142fa4fc0ff47d269">
					Integrates Stripe checkout into WordPress.				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>



<style>
.simpleblogcard_img_blockb066001627f284eb10fb4f3aaf6a0c42 {
  float: right;
  padding: 10px;
}
.simpleblogcard_borderb066001627f284eb10fb4f3aaf6a0c42 {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_titleb066001627f284eb10fb4f3aaf6a0c42 {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_descriptionb066001627f284eb10fb4f3aaf6a0c42 {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://wordpress.org/plugins/software-license-manager-client/>
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_borderb066001627f284eb10fb4f3aaf6a0c42">
			wordpress.org			<div class="simpleblogcard_titleb066001627f284eb10fb4f3aaf6a0c42">
				Software License Manager Client – WordPress plugin | WordPress.org			</div>
							<div class="simpleblogcard_descriptionb066001627f284eb10fb4f3aaf6a0c42">
					Provides shortcode validate a license key with the Software License Manager.				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>



<style>
.simpleblogcard_img_blockbdcdd76ea0c9db0f6338e7f2ed418e9e {
  float: right;
  padding: 10px;
}
.simpleblogcard_borderbdcdd76ea0c9db0f6338e7f2ed418e9e {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_titlebdcdd76ea0c9db0f6338e7f2ed418e9e {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_descriptionbdcdd76ea0c9db0f6338e7f2ed418e9e {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://wordpress.org/plugins/software-license-manager-for-woocommerce/>
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_borderbdcdd76ea0c9db0f6338e7f2ed418e9e">
			wordpress.org			<div class="simpleblogcard_titlebdcdd76ea0c9db0f6338e7f2ed418e9e">
				Software License Manager for WooCommerce – WordPress plugin | WordPress.org			</div>
							<div class="simpleblogcard_descriptionbdcdd76ea0c9db0f6338e7f2ed418e9e">
					Generate a license key to in WooCommerce product with the Software License Manager.				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>



<style>
.simpleblogcard_img_block76f5d519e2b17f3b223bd8b7c45afdd5 {
  float: right;
  padding: 10px;
}
.simpleblogcard_border76f5d519e2b17f3b223bd8b7c45afdd5 {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_title76f5d519e2b17f3b223bd8b7c45afdd5 {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_description76f5d519e2b17f3b223bd8b7c45afdd5 {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://wordpress.org/plugins/user-period-register/>
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_border76f5d519e2b17f3b223bd8b7c45afdd5">
			wordpress.org			<div class="simpleblogcard_title76f5d519e2b17f3b223bd8b7c45afdd5">
				User Period Register – WordPress plugin | WordPress.org			</div>
							<div class="simpleblogcard_description76f5d519e2b17f3b223bd8b7c45afdd5">
					Register users with time limit.				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>自プラグインの各種情報を取得</title>
		<link>https://blog.riverforest-wp.info/my-plugin-info/</link>
		
		<dc:creator><![CDATA[Katsushi Kawamori]]></dc:creator>
		<pubDate>Thu, 27 Oct 2022 11:06:24 +0000</pubDate>
				<category><![CDATA[Function]]></category>
		<category><![CDATA[プラグイン]]></category>
		<category><![CDATA[情報]]></category>
		<guid isPermaLink="false">https://blog.riverforest-wp.info/?p=3002</guid>

					<description><![CDATA[はじめに プラグインの開発者には、新たなバージョンの WordPress がリリースされる前に、Tested up to:(検証済み最新バージョン:)の値を確認するように、以下の様なメールが届きます。同じ事をやってみよう [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">はじめに</h3>



<p>プラグインの開発者には、新たなバージョンの WordPress がリリースされる前に、Tested up to:(検証済み最新バージョン:)の値を確認するように、以下の様なメールが届きます。同じ事をやってみようと思いコードを書いてみました。</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69e6bfac7a894&quot;}" data-wp-interactive="core/image" data-wp-key="69e6bfac7a894" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" width="548" height="439" src="https://blog.riverforest-wp.info/wp-content/uploads/20221027/2022-10-27-testedupto.png" alt="" class="wp-image-3005" srcset="https://blog.riverforest-wp.info/wp-content/uploads/20221027/2022-10-27-testedupto.png 548w, https://blog.riverforest-wp.info/wp-content/uploads/20221027/2022-10-27-testedupto-300x240.png 300w" sizes="auto, (max-width: 548px) 100vw, 548px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="拡大する"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<h3 class="wp-block-heading">概要</h3>



<p>プラグイン単体の場合は、<a href="https://developer.wordpress.org/reference/functions/plugins_api/">plugins_api</a> で取得できます。全プラグインの情報の場合、取得できる関数が見当たらないので、プロフィールサイトから取得する事にしました。プロフィールサイトには以下の様に各プラグインのリンクにスタイルをあてるクラス「<strong>plugin-info-container</strong>」があったので、そこからスクレイピングしました。</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69e6bfac7afd0&quot;}" data-wp-interactive="core/image" data-wp-key="69e6bfac7afd0" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="568" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://blog.riverforest-wp.info/wp-content/uploads/20221027/2022-10-27-133305-1024x568.png" alt="" class="wp-image-3001" srcset="https://blog.riverforest-wp.info/wp-content/uploads/20221027/2022-10-27-133305-1024x568.png 1024w, https://blog.riverforest-wp.info/wp-content/uploads/20221027/2022-10-27-133305-300x166.png 300w, https://blog.riverforest-wp.info/wp-content/uploads/20221027/2022-10-27-133305-768x426.png 768w, https://blog.riverforest-wp.info/wp-content/uploads/20221027/2022-10-27-133305.png 1520w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="拡大する"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<p>WordPress の関数を使えるように、<strong>wp-load.php</strong> を読み込めるようにしました。</p>



<p>また、コマンドラインオプションを設け、プラグイン単体での各属性を取得できるようにしました。各属性に関しては、<a href="https://developer.wordpress.org/reference/functions/plugins_api/">plugins_api</a> を参照してください。</p>



<p>以下に動作を動画（倍速）で示します。</p>



<figure class="wp-block-video"><video height="628" style="aspect-ratio: 1116 / 628;" width="1116" controls muted src="https://blog.riverforest-wp.info/wp-content/uploads/20221027/profiles-plugins.mp4"></video></figure>



<h3 class="wp-block-heading">コード</h3>



<pre class="prism line-numbers"><code class="language-php language-html">&lt;?php
/**
 * Name:        profiles-plugins.php
 * Version:     1.00
 * Author:      Katsushi Kawamori
 * Author URI:  https://riverforest-wp.info/
 * License:     GPLv2 or later
 * License URI: https://www.gnu.org/licenses/gpl-2.0.html
 *
 * @package     profiles-plugins
 */

/* Your WordPress profile url */
const WP_PROFILE_URL = 'https://profiles.wordpress.org/katsushi-kawamori/';

/* Wp load. This file =&gt; wp-content/uploads/profiles-plugins.php */
list( $abspath, $mypath ) = explode( 'wp-content', dirname( __FILE__ ), 2 );
$wp_load_path = $abspath . 'wp-load.php';
require_once( $wp_load_path );

/* For plugins_api */
require_once ABSPATH . 'wp-admin/includes/plugin-install.php';

$cmdoptions = array();
/* Example -a active_installs -p woocommerce */
$cmdoptions = getopt( 'a:p:' );

/* Default atribute 'tested' */
if ( isset( $cmdoptions&#91;'a'] ) &amp;&amp; ! empty( $cmdoptions&#91;'a'] ) ) {
	$atr = $cmdoptions&#91;'a'];
} else {
	$atr = 'tested';
}

if ( isset( $cmdoptions&#91;'p'] ) &amp;&amp; ! empty( $cmdoptions&#91;'p'] ) ) {
	$slug = $cmdoptions&#91;'p'];
	$plugin_s = array(
		'name' =&gt; read_plugins_api( $slug, 'name' ),
		'link' =&gt; read_plugins_api( $slug, 'homepage' ),
		'slug' =&gt; $slug,
		$atr =&gt; read_plugins_api( $slug, $atr ),
	);
	print_r( $plugin_s );
} else {
	/* Scraping */
	$dom = new DOMDocument( '1.0', 'UTF-8' );
	$html = file_get_contents( WP_PROFILE_URL );
	@$dom-&gt;loadHTML( $html );
	$xpath = new DOMXpath( $dom );
	/* Get &lt;a&gt; tag within class plugin-info-container */
	$a_tags = $xpath-&gt;query( '//div&#91;@class="plugin-info-container"]&#91;1]//a' );
	$count = 0;
	foreach ( $a_tags as $node ) {
		/* Get href attribute from within &lt;a&gt; tag */
		$link_url = 'https:' . $node-&gt;getAttribute( 'href' );
		/* Get slug from URL */
		$link_s = untrailingslashit( $link_url );
		$links = explode( '/', $link_s );
		$slug = end( $links );

		++$count;
		$plugin_s = array(
			'count' =&gt; $count,
			'name' =&gt; $node-&gt;nodeValue,
			'link' =&gt; $link_url,
			'slug' =&gt; $slug,
			$atr =&gt; read_plugins_api( $slug, $atr ),
		);
		print_r( $plugin_s );
	}
}

/** ==================================================
 * Get api and value
 *
 * @param string $slug  slug.
 * @param string $atr  atribute.
 * @return mixed api value.
 * @since 1.00
 */
function read_plugins_api( $slug, $atr ) {

	/* Call API */
	$call_api = plugins_api(
		'plugin_information',
		array(
			'slug' =&gt; $slug,
			'fields' =&gt; array(
				'short_description' =&gt; true,
				'description' =&gt; true,
				'active_installs' =&gt; true,
				'downloaded' =&gt; true,
				'icons' =&gt; true,
				'banners' =&gt; true,
				'ratings' =&gt; true,
			),
		)
	);

	return $call_api-&gt;$atr;

}</code></pre>
]]></content:encoded>
					
		
		<enclosure url="https://blog.riverforest-wp.info/wp-content/uploads/20221027/profiles-plugins.mp4" length="6436233" type="video/mp4" />

			</item>
		<item>
		<title>自動更新の間隔を変更するプラグイン</title>
		<link>https://blog.riverforest-wp.info/update-intervals/</link>
		
		<dc:creator><![CDATA[Katsushi Kawamori]]></dc:creator>
		<pubDate>Tue, 24 Nov 2020 21:51:22 +0000</pubDate>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[コア]]></category>
		<category><![CDATA[テーマ]]></category>
		<category><![CDATA[プラグイン]]></category>
		<category><![CDATA[自動更新]]></category>
		<guid isPermaLink="false">https://blog.riverforest-wp.info/?p=2541</guid>

					<description><![CDATA[はじめに WordPress 5.5 から、プラグインやテーマを自動更新できるようになり、また自動更新の際にメールが送られてくるようになりました。このメールを疎ましく感じる事もあるので、自動更新の間隔がどうなっているかな [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">はじめに</h3>



<p>WordPress 5.5 から、プラグインやテーマを自動更新できるようになり、また自動更新の際にメールが送られてくるようになりました。このメールを疎ましく感じる事もあるので、自動更新の間隔がどうなっているかなどを調べてみると、デフォルトで１日２回の間隔になっていました。この間隔を変更するフィルターを探したのですが、良くわからなかったので、間隔を変更するプラグインを作成しました。</p>



<div class="pluginstatsview-card-wrap">
	<div>
		<img decoding="async" src="https://ps.w.org/update-intervals/assets/icon-256x256.png?rev=2425059" alt="Update Intervals のアイコン" class="pluginstatsview-card-icon" />
		<div class="pluginstatsview-after-icon">
			<div class="pluginstatsview-bold"><a href="https://wordpress.org/plugins/update-intervals/" class="pluginstatsview-astyle">Update Intervals</a></div>
			<div class="pluginstatsview-small">自動更新の間隔を変更します。</div>
			<div class="pluginstatsview-small">作者: <a href="https://profiles.wordpress.org/katsushi-kawamori/">Katsushi Kawamori</a></div>
			<div style="clear: both;"></div>
		</div>
	</div>
	<div style="clear: both;"></div>

	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left"><a href="https://wordpress.org/plugins/update-intervals/#reviews" title="5.0(5点満点中)" class="pluginstatsview-astyle">	<span class="pluginstatsview-stars">
					<span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span>
			</span>
	</a>(1)</span>
		<span class="pluginstatsview-card-right">最終更新: 3週間 前</span>
	</div>
	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left">2,825ダウンロード</span>
		<span class="pluginstatsview-card-right">検証済み: 7.0</span>
	</div>
	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left">ダウンロード: <a href="https://downloads.wordpress.org/plugin/update-intervals.1.05.zip" class="dashicons dashicons-download pluginstatsview-download"></a></span>
		<span class="pluginstatsview-card-right">リリース: 2020-11-24</span>
	</div>
	<div class="pluginstatsview-small pluginstatsview-card-center">
		2026-04-21 08:56 時点の統計	</div>
</div>



<h3 class="wp-block-heading">スクリーンショット</h3>



<div class="wp-block-image"><figure data-wp-context="{&quot;imageId&quot;:&quot;69e6bfac7c16c&quot;}" data-wp-interactive="core/image" data-wp-key="69e6bfac7c16c" class="aligncenter size-large wp-lightbox-container"><img loading="lazy" decoding="async" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" width="845" height="620" src="https://blog.riverforest-wp.info/wp-content/uploads/20201123/screenshot-1.png" alt="" class="wp-image-2540" srcset="https://blog.riverforest-wp.info/wp-content/uploads/20201123/screenshot-1.png 845w, https://blog.riverforest-wp.info/wp-content/uploads/20201123/screenshot-1-300x220.png 300w, https://blog.riverforest-wp.info/wp-content/uploads/20201123/screenshot-1-768x564.png 768w" sizes="auto, (max-width: 845px) 100vw, 845px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="拡大する"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure></div>



<h3 class="wp-block-heading">仕様</h3>



<p>以下の自動更新の間隔を変更します。</p>



<ul class="wp-block-list"><li>コアとその翻訳</li><li>プラグインとその翻訳</li><li>テーマとその翻訳</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>自動更新のスケジュールを停止し、起動し直すという事はしません。あくまで、間隔のみの変更です。間隔を変更した時点がスケジュールの途中ならば、そのスケジュールを終えてから、変更したスケジュールへ移行します。</p></blockquote>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>公式プラグイン、公式テーマの概要・統計情報を表示するプラグイン</title>
		<link>https://blog.riverforest-wp.info/plugin-theme-stats-view/</link>
		
		<dc:creator><![CDATA[Katsushi Kawamori]]></dc:creator>
		<pubDate>Thu, 16 Apr 2020 02:32:46 +0000</pubDate>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[テーマ]]></category>
		<category><![CDATA[プラグイン]]></category>
		<category><![CDATA[統計]]></category>
		<guid isPermaLink="false">https://blog.riverforest-wp.info/?p=2204</guid>

					<description><![CDATA[はじめに ４年前につくり、１年程放置していたプラグインの概要・統計情報を表示するプラグイン、Plugin Stats View にブロックを加え使いやすくし、新たにテーマの概要・統計情報を表示するプラグイン、Theme  [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">はじめに</h3>



<p>４年前につくり、１年程放置していたプラグインの概要・統計情報を表示するプラグイン、<strong>Plugin Stats View</strong> にブロックを加え使いやすくし、新たにテーマの概要・統計情報を表示するプラグイン、<strong>Theme Stats View</strong> を作成しました。</p>



<p>公式プラグインや公式テーマの紹介をしたい時に使えると思います。直下の２つのカードは、<strong>Plugin Stats View</strong> を使用したカード表示です。</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<div class="pluginstatsview-card-wrap">
	<div>
		<img decoding="async" src="https://ps.w.org/plugin-stats-view/assets/icon-256x256.png?rev=1866155" alt="Plugin Stats View のアイコン" class="pluginstatsview-card-icon" />
		<div class="pluginstatsview-after-icon">
			<div class="pluginstatsview-bold"><a href="https://wordpress.org/plugins/plugin-stats-view/" class="pluginstatsview-astyle">Plugin Stats View</a></div>
			<div class="pluginstatsview-small">プラグイン情報をブロックあるいはショートコードで表示します。</div>
			<div class="pluginstatsview-small">作者: <a href="https://profiles.wordpress.org/katsushi-kawamori/">Katsushi Kawamori</a></div>
			<div style="clear: both;"></div>
		</div>
	</div>
	<div style="clear: both;"></div>

	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left"><a href="https://wordpress.org/plugins/plugin-stats-view/#reviews" title="5.0(5点満点中)" class="pluginstatsview-astyle">	<span class="pluginstatsview-stars">
					<span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span>
			</span>
	</a>(1)</span>
		<span class="pluginstatsview-card-right">最終更新: 3週間 前</span>
	</div>
	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left">5,346ダウンロード</span>
		<span class="pluginstatsview-card-right">検証済み: 7.0</span>
	</div>
	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left">ダウンロード: <a href="https://downloads.wordpress.org/plugin/plugin-stats-view.3.14.zip" class="dashicons dashicons-download pluginstatsview-download"></a></span>
		<span class="pluginstatsview-card-right">リリース: 2016-01-01</span>
	</div>
	<div class="pluginstatsview-small pluginstatsview-card-center">
		2026-04-21 08:56 時点の統計	</div>
</div>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<div class="pluginstatsview-card-wrap">
	<div>
		<img decoding="async" src="https://ps.w.org/theme-stats-view/assets/icon-256x256.png?rev=2283647" alt="Theme Stats View のアイコン" class="pluginstatsview-card-icon" />
		<div class="pluginstatsview-after-icon">
			<div class="pluginstatsview-bold"><a href="https://wordpress.org/plugins/theme-stats-view/" class="pluginstatsview-astyle">Theme Stats View</a></div>
			<div class="pluginstatsview-small">テーマ情報をブロックあるいはショートコードで表示します。</div>
			<div class="pluginstatsview-small">作者: <a href="https://profiles.wordpress.org/katsushi-kawamori/">Katsushi Kawamori</a></div>
			<div style="clear: both;"></div>
		</div>
	</div>
	<div style="clear: both;"></div>

	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left"><a href="https://wordpress.org/plugins/theme-stats-view/#reviews" title="0.0(5点満点中)" class="pluginstatsview-astyle">	<span class="pluginstatsview-stars">
					<span class="dashicons dashicons-star-empty"></span><span class="dashicons dashicons-star-empty"></span><span class="dashicons dashicons-star-empty"></span><span class="dashicons dashicons-star-empty"></span><span class="dashicons dashicons-star-empty"></span>
			</span>
	</a>(0)</span>
		<span class="pluginstatsview-card-right">最終更新: 3週間 前</span>
	</div>
	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left">3,220ダウンロード</span>
		<span class="pluginstatsview-card-right">検証済み: 7.0</span>
	</div>
	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left">ダウンロード: <a href="https://downloads.wordpress.org/plugin/theme-stats-view.2.10.zip" class="dashicons dashicons-download pluginstatsview-download"></a></span>
		<span class="pluginstatsview-card-right">リリース: 2020-04-14</span>
	</div>
	<div class="pluginstatsview-small pluginstatsview-card-center">
		2026-04-21 08:56 時点の統計	</div>
</div>



<p></p>
</div>
</div>



<h3 class="wp-block-heading">機能</h3>



<p>プラグイン、テーマの概要や統計情報を表示します。</p>



<h3 class="wp-block-heading">使い方</h3>



<ul class="wp-block-list"><li>スラッグをブロックまたはショートコードで指定します。</li><li>複数プラグイン、複数テーマ指定の場合は、合計された統計情報を表示します。</li></ul>



<h3 class="wp-block-heading">動作</h3>



<p><strong>Plugin Stats View</strong></p>



<figure class="wp-block-video aligncenter"><video height="720" style="aspect-ratio: 1280 / 720;" width="1280" autoplay controls loop muted src="https://blog.riverforest-wp.info/wp-content/uploads/20200416/plugin-stats-view.mp4"></video></figure>



<p><strong>Theme Stats View</strong></p>



<figure class="wp-block-video aligncenter"><video height="720" style="aspect-ratio: 1280 / 720;" width="1280" autoplay controls loop muted src="https://blog.riverforest-wp.info/wp-content/uploads/20200416/theme-stats-view.mp4"></video></figure>



<p></p>
]]></content:encoded>
					
		
		<enclosure url="https://blog.riverforest-wp.info/wp-content/uploads/20200416/plugin-stats-view.mp4" length="25563217" type="video/mp4" />
<enclosure url="https://blog.riverforest-wp.info/wp-content/uploads/20200416/theme-stats-view.mp4" length="27970800" type="video/mp4" />

			</item>
		<item>
		<title>WordPress プラグイン 翻訳の手順</title>
		<link>https://blog.riverforest-wp.info/wordpress-plugins-translation/</link>
		
		<dc:creator><![CDATA[Katsushi Kawamori]]></dc:creator>
		<pubDate>Mon, 23 Dec 2019 23:58:56 +0000</pubDate>
				<category><![CDATA[translation]]></category>
		<category><![CDATA[GTE]]></category>
		<category><![CDATA[PTE]]></category>
		<category><![CDATA[プラグイン]]></category>
		<category><![CDATA[翻訳]]></category>
		<guid isPermaLink="false">https://blog.riverforest-wp.info/?p=1903</guid>

					<description><![CDATA[はじめに WordPress プラグインやテーマの翻訳は、サーバー上で行われます。以前は、プラグイン内に翻訳ファイルを同梱しましたが現在は同梱しません。以下に翻訳の手順を記します。 手順１　プラグインでのアクションフック [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h4 class="wp-block-heading">はじめに</h4>



<p>WordPress プラグインやテーマの翻訳は、サーバー上で行われます。以前は、プラグイン内に翻訳ファイルを同梱しましたが現在は同梱しません。以下に翻訳の手順を記します。</p>



<style>
.simpleblogcard_img_block3f6510fc55f9f70db34459588e05ec43 {
  float: right;
  padding: 10px;
}
.simpleblogcard_border3f6510fc55f9f70db34459588e05ec43 {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_title3f6510fc55f9f70db34459588e05ec43 {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_description3f6510fc55f9f70db34459588e05ec43 {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://translate.wordpress.org/projects/>
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_border3f6510fc55f9f70db34459588e05ec43">
			translate.wordpress.org			<div class="simpleblogcard_title3f6510fc55f9f70db34459588e05ec43">
				Projects &lt; GlotPress | WordPress.org			</div>
							<div class="simpleblogcard_description3f6510fc55f9f70db34459588e05ec43">
									</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>



<h4 class="wp-block-heading">手順１　プラグインでのアクションフック登録</h4>



<pre class="prism line-numbers"><code class="language-php language-html">add_action( 'plugins_loaded', 'my_plugin_load_textdomain' );
/** ==================================================
 * i18n
 *
 * @since 1.00
 */
function my_plugin_load_textdomain() {
	load_plugin_textdomain( 'プラグインのスラッグ' );
}</code></pre>



<p><strong>load_plugin_textdomain</strong> での言語ファイルのパスは不要で、<strong>スラッグのみ指定</strong>するのがポイントです。</p>



<h4 class="wp-block-heading">手順２　プラグインをコミット</h4>



<p>コミット後、<strong>１５分</strong>で翻訳可能状態となります。</p>



<h4 class="wp-block-heading">手順３　翻訳する</h4>



<p>翻訳は、<strong>https://translate.wordpress.org/locale/ja/default/wp-plugins/スラッグ名</strong> で行います。<strong>wordpress.org のアカウントでログイン</strong>して行います。<strong>Stable (latest release)</strong>, <strong>Stable Readme (latest release)</strong> の２ヶ所の編集でOKです。Development の２ヶ所は、自動で追従します。</p>



<h4 class="wp-block-heading">手順４　approve する</h4>



<p><strong>Prio</strong> 列にチェックを入れ、<strong>approve</strong> します。もし、Prio 列にチェックボックスが無かったら、<strong>PTE 権限</strong>を持っていない事になっています。取得してください。</p>



<h4 class="wp-block-heading">手順５　３０分待つ</h4>



<p><strong>95%以上 approve</strong> されてから<strong>３０分</strong>で翻訳ファイルがプラグインがインストールされているサイトにダウンロードされるようになります。ダウンロード先は、<strong>wp-content/languages/plugins</strong> です。<strong>手順１</strong>がしてあれば、プラグインはこのファイルを読んで翻訳します。</p>



<h4 class="wp-block-heading">関連記事</h4>



<style>
.simpleblogcard_img_block5a17f4e02ba5ee289f178bd3aa0a5a11 {
  float: right;
  padding: 10px;
}
.simpleblogcard_border5a17f4e02ba5ee289f178bd3aa0a5a11 {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_title5a17f4e02ba5ee289f178bd3aa0a5a11 {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_description5a17f4e02ba5ee289f178bd3aa0a5a11 {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://blog.riverforest-wp.info/plugins-themes-pte-request/>
				<figure class="simpleblogcard_img_block5a17f4e02ba5ee289f178bd3aa0a5a11">
			<img decoding="async" style="border-radius: 5px; width: 100px; height: 53px;" src="https://blog.riverforest-wp.info/wp-content/uploads/eyecatch/trancelate-300x160.jpg" alt="プラグイン・テーマ、多国語化の為の PTE リクエスト – WordPress Memo" />
		</figure>
		<div class="simpleblogcard_inner">
		<div class="simpleblogcard_border5a17f4e02ba5ee289f178bd3aa0a5a11">
			blog.riverforest-wp.info			<div class="simpleblogcard_title5a17f4e02ba5ee289f178bd3aa0a5a11">
				プラグイン・テーマ、多国語化の為の PTE リクエスト – WordPress Memo			</div>
							<div class="simpleblogcard_description5a17f4e02ba5ee289f178bd3aa0a5a11">
					はじめに Capital P さんの記事を読みました。その補足事項として、自分のプラグインやテーマを他国語に訳してくれる人がいて未承認だった場合に、どのようにすれば良いのか書かせて&#8230;				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>無料でソフトウェアをつくるという事</title>
		<link>https://blog.riverforest-wp.info/plugin-creation/</link>
		
		<dc:creator><![CDATA[Katsushi Kawamori]]></dc:creator>
		<pubDate>Thu, 28 Nov 2019 00:56:31 +0000</pubDate>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Webサービス]]></category>
		<category><![CDATA[アドオン]]></category>
		<category><![CDATA[アドオン販売]]></category>
		<category><![CDATA[プラグイン]]></category>
		<guid isPermaLink="false">https://blog.riverforest-wp.info/?p=1834</guid>

					<description><![CDATA[はじめに WordPress の公式プラグインを作成し始めてから６年、いつの間にか多数のプラグインを作成しました。それに機能を付与するアドオンの販売状況と、無料でプラグインを作成する意味を考えてみました。 2012年～2 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">はじめに</h3>



<p><strong><a href="https://wordpress.org/">WordPress</a></strong> の<strong><a href="https://wordpress.org/plugins/">公式プラグイン</a></strong>を作成し始めてから６年、いつの間にか多数のプラグインを作成しました。それに機能を付与するアドオンの販売状況と、無料でプラグインを作成する意味を考えてみました。</p>



<style>
.simpleblogcard_img_blocka4f4aee575550b18e2e80f317959ca11 {
  float: right;
  padding: 10px;
}
.simpleblogcard_bordera4f4aee575550b18e2e80f317959ca11 {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_titlea4f4aee575550b18e2e80f317959ca11 {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_descriptiona4f4aee575550b18e2e80f317959ca11 {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://profiles.wordpress.org/katsushi-kawamori/#content-plugins>
				<figure class="simpleblogcard_img_blocka4f4aee575550b18e2e80f317959ca11">
			<img decoding="async" style="border-radius: 5px; width: 100px; height: 100px;" src="https://www.gravatar.com/avatar/90626c97edc7a76c88acf1d216d22721?s=1024&#038;r=g&#038;d=mm" alt="Katsushi Kawamori (@katsushi-kawamori) – WordPress user profile | WordPress.org" />
		</figure>
		<div class="simpleblogcard_inner">
		<div class="simpleblogcard_bordera4f4aee575550b18e2e80f317959ca11">
			profiles.wordpress.org			<div class="simpleblogcard_titlea4f4aee575550b18e2e80f317959ca11">
				Katsushi Kawamori (@katsushi-kawamori) – WordPress user profile | WordPress.org			</div>
							<div class="simpleblogcard_descriptiona4f4aee575550b18e2e80f317959ca11">
					公式プラグイン一覧				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>



<h3 class="wp-block-heading">2012年～2013年</h3>



<ul class="wp-block-list"><li><strong><a href="https://www.perl.org/">Perl</a></strong> で作成したプログラムを <strong><a href="https://www.php.net/">PHP</a></strong> に移植、それをプラグイン化した。</li><li>純粋に職場のサイト更新の手間を省くためのものでした。</li></ul>



<h3 class="wp-block-heading">2013年～2016年 </h3>



<ul class="wp-block-list"><li>必要があって、いろいろ作成していく。</li><li>プラグイン <strong><a href="https://wordpress.org/plugins/media-from-ftp/">Media from FTP</a></strong> がヒットし、世界中で使われるようになる。</li><li>サポートフォーラムで様々な要望に応える。</li><li>ますますヒットする。</li><li>無料で作り続けるのが馬鹿馬鹿しくなる。</li></ul>



<h3 class="wp-block-heading">2016年～2018年</h3>



<ul class="wp-block-list"><li>プラグインのアドオンやテーマを個人で販売している人が存在するのを知る。</li><li><strong><a href="https://japan.wordcamp.org/">WordCamp</a></strong> で情報収集しプラグインのアドオン販売を考える。</li><li>プラグインのアドオン販売開始。</li><li>初期の頃は、売り切り60ドルで販売。少し売れる。</li><li>周囲から安いのではと言われ、120ドルにしたら売れなくなる。</li><li>売り切り100ドルにし、サブスクリプション年額60ドルも開始。</li><li>サブスクリプションが売れないのとサブスクリプションソフトウェアの有償化でサブスクリプションを辞める。</li><li>初期の値段60ドルの売り切りに戻す。売れ行きが戻る。</li><li>Webサービス<strong><a href="https://bdc-scoring.com/ja/">ボールルームダンス競技会採点システム</a></strong>を開始。</li></ul>



<h3 class="wp-block-heading">現在</h3>



<ul class="wp-block-list"><li>2019年初頭から、アドオン販売を大幅値下げ、60ドルを30ドルにする。</li><li>半額に値下げしたにもかかわらず、1.5倍の売上増。実質3倍の伸び。</li><li>アドオンの適正価格は、30ドル以下であると知る。</li><li>アドオンは下手なアルバイトよりも儲からないと実感する。</li><li><strong><a href="https://bdc-scoring.com/ja/">ボールルームダンス競技会採点システム</a></strong>からいくつかの機能を分離し<strong><a href="https://wordpress.org/plugins/">公式プラグイン</a></strong>とする。</li><li>Webサービス<strong><a href="https://compe-scoring.com/ja/">競技会採点システム</a></strong>を開始。 </li><li> <strong><a href="https://compe-scoring.com/ja/">競技会採点システム</a></strong>が１団体に導入されて報酬を得る。</li></ul>



<h3 class="wp-block-heading">雑感</h3>



<p>まず最初に思うのは、ソフトウェアの為のソフトウェア（この記事ではアドオン）よりも、サービス（この記事ではWebサービス）の方が報酬になるという事です。</p>



<p>それを理解した時から、無料で公式プラグインを作成する事が苦で無くなり、むしろ積極的に行うようになりました。自分のプラグインだけでは無く、人の作成したプラグインの力も借りて、Webサービス<a href="https://compe-scoring.com/ja/"><strong>競技会採点システム</strong></a>で報酬を得たからです。</p>



<p>世の中ではソフトウェアの為のソフトウェアを買う人よりもサービスを買う人の方が多いのではないかと思います。それならば、皆で無償で知恵を出し合いソフトウェア(この記事では<strong>WordPress</strong>)をより良いものにして<strong>どのようなサービス</strong>にでも<strong>変幻自在に対応</strong>できるようにすべきだというのが今の心境です。</p>



<p>それがいつか報酬となって返ってくるはずだと思います。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WebP 画像を生成するプラグイン</title>
		<link>https://blog.riverforest-wp.info/plus-webp/</link>
		
		<dc:creator><![CDATA[Katsushi Kawamori]]></dc:creator>
		<pubDate>Tue, 14 May 2019 02:11:09 +0000</pubDate>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[プラグイン]]></category>
		<category><![CDATA[画像]]></category>
		<guid isPermaLink="false">https://blog.riverforest-wp.info/?p=1284</guid>

					<description><![CDATA[はじめに WordPress は、まだ WebP 画像に対応していませんが、WebP 画像を生成するプラグインを作成してみました。 正確には、WebP 画像のサムネイル生成に対応していないというところでしょうか？ Mim [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">はじめに</h3>



<p>WordPress は、まだ WebP 画像に対応していませんが、WebP 画像を生成するプラグインを作成してみました。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>正確には、WebP 画像のサムネイル生成に対応していないというところでしょうか？ Mime Type を設定すれば、アップロードはできますが、サーバーによりサムネイルを生成しません。GD の WebP サポートが各サーバーにより有無があるので、 デフォルトの Mime Type から除外しているのでしょう。</p>
</blockquote>



<div class="pluginstatsview-card-wrap">
	<div>
		<img decoding="async" src="https://ps.w.org/plus-webp/assets/icon-256x256.png?rev=2087314" alt="Plus WebP or AVIF のアイコン" class="pluginstatsview-card-icon" />
		<div class="pluginstatsview-after-icon">
			<div class="pluginstatsview-bold"><a href="https://wordpress.org/plugins/plus-webp/" class="pluginstatsview-astyle">Plus WebP or AVIF</a></div>
			<div class="pluginstatsview-small">WebP または AVIF を生成。</div>
			<div class="pluginstatsview-small">作者: <a href="https://profiles.wordpress.org/katsushi-kawamori/">Katsushi Kawamori</a></div>
			<div style="clear: both;"></div>
		</div>
	</div>
	<div style="clear: both;"></div>

	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left"><a href="https://wordpress.org/plugins/plus-webp/#reviews" title="4.6(5点満点中)" class="pluginstatsview-astyle">	<span class="pluginstatsview-stars">
					<span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-half"></span>
			</span>
	</a>(26)</span>
		<span class="pluginstatsview-card-right">最終更新: 3週間 前</span>
	</div>
	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left">5,000以上サイトで有効化中</span>
		<span class="pluginstatsview-card-right">検証済み: 7.0</span>
	</div>
	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left">ダウンロード: <a href="https://downloads.wordpress.org/plugin/plus-webp.5.11.zip" class="dashicons dashicons-download pluginstatsview-download"></a></span>
		<span class="pluginstatsview-card-right">リリース: 2019-05-14</span>
	</div>
	<div class="pluginstatsview-small pluginstatsview-card-center">
		2026-04-21 08:56 時点の統計	</div>
</div>



<h3 class="wp-block-heading">概要</h3>



<ul class="wp-block-list">
<li>メディアライブラリに画像ファイルを追加するときに WebP 画像を生成します。</li>



<li>バックグラウンドですべての画像から WebP 画像を生成します。</li>



<li>オプションで、新規にメディアを追加する際の画像ファイルをWebPに置き換え、元の画像ファイルを削除できます。また、すべての画像を生成する場合、元の画像ファイル ID は WebP として上書きされ、元の画像ファイルを削除します。コンテンツ内のすべてのURLも置換できます。このオプションは、ほぼ全てのブラウザが WebP に対応して以降に使用すべきです。 </li>
</ul>



<p>WebP 対応の GD モジュールや、cwebp コマンドなどは、必要ありません。 </p>



<h3 class="wp-block-heading">使い方</h3>



<figure class="wp-block-image aligncenter"><img loading="lazy" decoding="async" width="1024" height="695" src="https://blog.riverforest-wp.info/wp-content/uploads/20190513/screenshot-1-1024x695.png" alt="" class="wp-image-1288" srcset="https://blog.riverforest-wp.info/wp-content/uploads/20190513/screenshot-1-1024x695.png 1024w, https://blog.riverforest-wp.info/wp-content/uploads/20190513/screenshot-1-300x204.png 300w, https://blog.riverforest-wp.info/wp-content/uploads/20190513/screenshot-1-768x521.png 768w, https://blog.riverforest-wp.info/wp-content/uploads/20190513/screenshot-1-100x68.png 100w, https://blog.riverforest-wp.info/wp-content/uploads/20190513/screenshot-1.png 1204w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption"><strong>新規追加時に、同一名・同一時間で生成します。</strong></figcaption></figure>



<figure class="wp-block-image aligncenter"><img loading="lazy" decoding="async" width="1024" height="629" src="https://blog.riverforest-wp.info/wp-content/uploads/20190513/screenshot-2-1024x629.png" alt="" class="wp-image-1299" srcset="https://blog.riverforest-wp.info/wp-content/uploads/20190513/screenshot-2-1024x629.png 1024w, https://blog.riverforest-wp.info/wp-content/uploads/20190513/screenshot-2-300x184.png 300w, https://blog.riverforest-wp.info/wp-content/uploads/20190513/screenshot-2-768x472.png 768w, https://blog.riverforest-wp.info/wp-content/uploads/20190513/screenshot-2-100x61.png 100w, https://blog.riverforest-wp.info/wp-content/uploads/20190513/screenshot-2.png 1192w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption"><strong>一括生成をバックグラウンドで実行できます。処理が終わるとメールが配信されます。</strong> </figcaption></figure>



<figure class="wp-block-image aligncenter"><img loading="lazy" decoding="async" width="1024" height="630" src="https://blog.riverforest-wp.info/wp-content/uploads/20190513/screenshot-3-1024x630.png" alt="" class="wp-image-1300" srcset="https://blog.riverforest-wp.info/wp-content/uploads/20190513/screenshot-3-1024x630.png 1024w, https://blog.riverforest-wp.info/wp-content/uploads/20190513/screenshot-3-300x185.png 300w, https://blog.riverforest-wp.info/wp-content/uploads/20190513/screenshot-3-768x473.png 768w, https://blog.riverforest-wp.info/wp-content/uploads/20190513/screenshot-3-100x62.png 100w, https://blog.riverforest-wp.info/wp-content/uploads/20190513/screenshot-3.png 1207w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption"><strong>オプション</strong> </figcaption></figure>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
