WordPressをCMSとして構築する際に、よりポータブルな実装を目指して、WordPressの設定(ダッシュボードの「設定」→「一般」の「サイトのタイトル」や「URL」)を変更するのみで、本文中やタイトルのサイト名、URL表記にも反映される機能(ショートコード)を追加しました。

何か不具合等ありましたらコメント欄にお願いします。

オプションでこの設定を有効な場合、[site_name]、[url]という記述を見つけると、置換します。
※上記は、便宜上、ブラケット”[“と”]”を全角表記していますが、実際には半角のものを利用してください。

使い方

  1. niche-patch.0.94.zipをダウンロード※最新版はhttp://typista.it-creates.com/wp-content/uploads/niche-patch.zip
  2. プラグインディレクトリに解凍
  3. ダッシュボードからアクティベート
  4. ONにしたい機能は「ダッシュボード」→「設定」→「Niche Patch Plugin」から。

その他、バージョン非表示機能、投稿&ページの作成画面で、一番下に「スラッグ」を表示する機能、投稿タイムスタンプのチェック機能、カテゴリー未選択 or 未分類のチェック機能、ダッシュボードログインページにDigest認証を設置する機能、CMSとしてクライアント運用することを想定しWordPressロゴやバージョン等の不要な表示を削除する機能、本番環境でない場合に「テスト環境」であることを高い視認性で通知する機能などなどを追加することができます。

自分で必要と思われる機能を少しずつ追加した結果、NitchPatchは地味に多機能になりつつあるので、このあたりの機能をわかりやすく説明するページを用意したほうが良さそうですね。

制限事項

  1. 動作検証はWordPress3.0.1です。
  2. すでにショートコードを利用しているプラグインによっては、正しくショートコードが置換されない場合があります。あまり推奨される対応ではないと思いますが、すでに利用しているプラグイン側でdo_shortcodeの処理を追加することで正しく動作する場合があります。
  3. v0.93の修正機能は別途掲載するPage Category PlusプラグインのWordPress3.0対応とセットで期待する効果を得られるものです。
  4. Gmail仕様は公に保証されたものを利用しているわけではありませんので、2010/07/21現在動作しますが、今後の動作も保証するものではありません。(もちろん極力対応していくつもりですが)
  5. WordPressMUでの動作確認はかなり不充分ですので、その点ご了承ください。WordPress3.0よりMUと統合されていますが、未検証です。
  6. 同MUでのメール送信の際の差出人メールアドレスへのマルチドメインは未検証です。(問題なく動いてくれそうですが・・・)
  7. Page/Postスラッグのチェック機能は半角英数のみ許可する or 許可しないのオプションです。
  8. シンプル化のためのオプション値を大幅に見直した都合により、v.0.82以前との当該オプションは互換性がありません。
  9. シンプル化の設定一覧(テーブル)に1行単位に色を変えるスタイルを適用していますが、IEは正しく表示されません。
  10. シンプル化の設定一覧ラベル(権限グループ名)が日本語表示されない場合があります。(日本語表示されているWP2.8.4環境で、Role Managerを無効化&削除しましたが、問題なく日本語表示されていますので、切り分けに至っていません。)
  11. ご利用のWebサーバ(Apache)がCGIモードの場合は、ログイン画面へのHTTP Digest認証は機能しません。
  12. 以前から気長にリファクタリングを想定中ですが、オプション値のバリデーションがほとんど実装されていませんので、ご了承ください。
  13. まだ実装は不十分ですが、Niche PatchはJavaScriptがONの状態でのみ正しく動作します。OFFの場合はサイトトップにリダイレクト処理しています。(今後はリダイレクト先を指定可能なように対応予定)
  14. バージョン(v.0.58)のメインとなるCMS運用のためのシンプル化機能は、オプションがONであると同時に、便宜上「ユーザ作成権限」が無い(つまり管理者でない)場合に動作します※細かい機能ごとのオプション設定は要望があれば検討します。v.0.84でグループ権限ごとに設定できるように対応しました。
  15. wp_list_pages()で実際に表示されるページ一覧は、menu_order(=ページ順序)の次にpost_title(=ページタイトル)の文字コード順のようですので、同じmenu_orderの場合、並び順のパっと見では順番操作できていないように勘違いしやすいので注意してください。(順番操作ボタンを+/-ではなく↑/↓のように1件ずつ確実に入れ替えていく処理も考えましたが、post_statusとの関連でダッシュボードのページ管理一覧を表示しているモードによって隠れているページとの順序性をどうするかという点で仕様を詰め切れそうにないので見送りました。)
  16. 投稿タイムスタンプのチェックは、ページの場合に動作しません。(今後調査します)
  17. 「保存」「公開」ボタンのonclickイベントを利用していますが、他プラグインとの競合は未検証です。(こちらも追って、調査していきます)
  18. 投稿スラッグ/ページスラッグの必須入力オプションは、クイック編集では動作しません。

改修履歴

[v.0.94]2010.09.07

  1. タイトルや記事中でショートコード[site_name]、[url]を利用可能に。

[v.0.93]2010.07.21

  1. Page Category Plusプラグインが有効の場合にのみ、ページのカテゴリ未選択の警告オプションを有効とする対応
  2. ダッシュボードの投稿/ページ編集モードの判別方法のWordPress3.0対応

[v.0.92]2010.07.13

  1. WordPress3.0のCMS簡易表示機能でダッシュボード体裁崩れの対策

[v.0.91]2009.12.15

  1. WordPress2.9と「スラッグ入力」オプションの競合不具合対策

[v.0.90]2009.12.14

  1. Gmail受信(連携)機能を追加

[v.0.89]2009.10.22

  1. NichePatchプラグインのオプション値授受方法をPOSTからGETに変更

[v.0.88]2009.09.25

  1. 予約投稿失敗への回避(あくまでサーバ側で自身への名前解決できない場合への対処です)
  2. メール投稿失敗への回避(同上)
  3. 投稿スラッグ/ページスラッグ必須入力の場合の利用可能文字種にハイフンを追加しました。

[v.0.87]2009.09.17

  1. MU対応の一環で、WordPressからメール送信する際の差出人メールアドレスに変数%mydomain%を利用可能にしました。(これにより、MUの各ユーザをサブドメイン運用していた場合に、@以降にサブドメインが適用されます。)
  2. タグクラウド出力順を任意に制御できる機能を追加しました。この機能はあまり露出しないラグ用スラッグ名でソートする機能のため、「01-tagslug」「02-tagslug」のようにすることで、制御可能です。(01-などはパーマリンク設定によってはURLに露出する場合があります。)
  3. pluginsディレクトリ、themesディレクトリを隠蔽する機能(v.0.50実装済み)はWordPress2.8以降は不要なのでバージョンチェックにより無効化するように対処しました。

[v.0.86]2009.08.28

  1. ダッシュボード左上のロゴを任意素材に差し替え可能なように対応しました。
  2. ページスラッグやポストスラッグ未入力 or 半角英数以外の場合に更新できないチェック機能を追加。

[v.0.85]2009.08.26

  1. 開発環境を識別するラベルをブラウザ最上部に固定するように変更しました。
  2. シンプル化設定テーブルで、「管理者」(Administrators)グループは「ツール」「設定」を消せない仕様に変更しました。(Niche Patchを無効化しないと設定変更できなくなってしまいますので)
  3. (リンク)ファイルサイズのJSON取得先サーバを自前に変更しました。

[v.0.84]2009.08.15

  1. シンプル化設定テーブルの色分け用CSSの衝突不具合回避

[v.0.83]2009.08.14

  1. ファイルサイズ出力機能のIE不具合対応
  2. ダッシュボードシンプル化の詳細オプション対応

[v.0.82]2009.06.18

  1. たびたびの検証不足でファイルサイズ出力機能を動作させるためのjQuery読み込みが抜けていました。 (正確にはv.0.80でソースリファクタリングしたときの弊害)

[v.0.81]2009.06.17

  1. 検証不足で不必要な箇所にmetaタグ出力があったため改修 (XTHML ValidなWordPressを汚さないように・・・)

[v.0.80]2009.06.17

  1. 開発環境判定でホスト名設定な機能を追加
  2. リンクファイルの形式に合わせたアイコン表示機能を追加
  3. リンクファイルのファイルサイズを表示する機能を追加
  4. 開発環境判定ONかつ開発環境動作の場合に、投稿ページで「カテゴリ追加」が動作しない不具合の改修
  5. window.onloadハンドラからリスナー方式に変更

[v.0.70]2009.02.07

  1. 開発環境判定機能をリリース

[v.0.60]2009.02.04

  1. ログイン画面へのHTTP Digest認証機能をリリース
  2. v.0.58リリースのCMSシンプル化機能で、権限グループによっては、意図せずダッシュボードメニューの「設定」が表示されてしまっていたので、非表示の対応

[v.0.59]2009.01.28

  1. CMS運用のための+1のシンプル機能リリース
  2. サーバ(PHPバージョン or 設定?)によってはCMSシンプル化機能が動作しなかった不具合(strposの問題?)の修正

[v.0.58]2009.01.27

  1. CMS運用のための13のシンプル機能リリース
  2. ページの場合に「カテゴリチェック無し」 or 「未選択のみ」が不正に動作していた不具合の修正※Page Category Plus(v.2.2で検証)を利用している場合に、当該オプションがONであれば正しく動作します。

[v.0.51]2009.01.15

  1. WordPress2.7不具合対応(投稿タイムスタンプチェックとカテゴリチェック)

[v.0.50]2009.01.10

  1. ページの表示順操作の対応
  2. テーマディレクトリを隠蔽するためにindex.html生成機能追加

今後の対応

開発環境の識別条件をもうすこしフレキシブルに設定可能にするよう考えています。

ログイン画面へのHTTP Digest認証機能のIDとパスワードは複数指定可能なようにしたい。

また、保存パスワードは可能ならばハッシュ化してDB保存しておきたい。

HTTP認証ID、パスワードのリマンド機能の要不要、その実装方法なども検討予定です。

なお、v0.60からNiche Pacheのオプション値を”false”(文字列)から、false(真偽値)に変更しています。

これは”false”(文字列)のままだと、テキスト指定のオプション値がNULLの場合に”false”(文字列)になってしまう歪な現象を避けるための対処です。

ソースレビューだけですが、JavaScriptソースを除いて、オプション値が”false”(文字列)かの判定は過去バージョンでは存在しないため、影響は出ないはずですが、もし過去バージョンですでに運用されている場合は、大変お手数をおかけしますが充分にテスト実施のうえ、バージョンアップしてください。

さらに本来は”true”(文字列)も、true(真偽値)に変更すべきですが、現状では大勢に影響はないものと判断(むしろ変更したことによるソース修正&検証の影響が大きい)し、片手落ち感が残りますが、既存のままとしています。 プラグインの配布方法、とくにバージョンアップ時の通知方法を調べる。

その他、思いつきでニッチにふさわしいパッチがあれば、プラグイン実装していく。 日本語決め打ちではなく、多国語対応方法も気長に調べていきたい。

SPaiS WordPress プラグインの作り方(3) ステップ1:翻訳の仕組み

WordPressをCMSとして構築する際に、よりポータブルな実装を目指して、WordPressの設定(ダッシュボードの「設定」→「一般」の「サイトのタイトル」や「URL」)を変更するのみで、本文中やタイトルのサイト名、URL表記にも反映される機能(ショートコード)を追加しました。

何か不具合等ありましたらコメント欄にお願いします。

[site_name]、[url]という記述を見つけると、置換します。
<ul>
<li>ダッシュボードの「投稿ウィジェット」メニューに「カテゴリー」が表示されない</li>
<li>投稿/ページ編集ともに「カテゴリーウィジェット」が表示されない</li>
</ul>
<span style=”color: #ff0000;”> </span>

<!–more–>
<h3>使い方</h3>
<ol>
<li><a href=”http://typista.it-creates.com/wp-content/uploads/niche-patch.0.93.zip” target=”_blank”>niche-patch.0.93.zip</a>をダウンロード※最新版は<a href=”http://typista.it-creates.com/wp-content/uploads/niche-patch.zip” target=”_blank”>http://typista.it-creates.com/wp-content/uploads/niche-patch.zip
</a>★今回はダウンロード→解凍までちゃんと確認しました!<a href=”http://typista.it-creates.com/wp-content/uploads/niche-patch.zip” target=”_blank”></a></li>
<li>プラグインディレクトリに解凍</li>
<li>ダッシュボードからアクティベート</li>
<li><span style=”color: #ff0000;”>ONにしたい機能</span>は「ダッシュボード」→「設定」→「Niche Patch Plugin」から。</li>
</ol>
その他、バージョン非表示機能、投稿&ページの作成画面で、一番下に「スラッグ」を表示する機能、投稿タイムスタンプのチェック機能、カテゴリー未選択 or 未分類のチェック機能、ダッシュボードログインページにDigest認証を設置する機能、CMSとしてクライアント運用することを想定しWordPressロゴやバージョン等の不要な表示を削除する機能、本番環境でない場合に「テスト環境」であることを高い視認性で通知する機能などなどを追加することができます。

自分で必要と思われる機能を少しずつ追加した結果、NitchPatchは地味に多機能になりつつあるので、このあたりの機能をわかりやすく説明するページを用意したほうが良さそうですね。
<h3>制限事項</h3>
<ol>
<li>動作検証は最新WordPress3.0です。</li>
<li>今回の修正機能は別途掲載するPage Category PlusプラグインのWordPress3.0対応とセットで期待する効果を得られるものです。</li>
<li>Gmail仕様は公に保証されたものを利用しているわけではありませんので、2010/07/21現在動作しますが、今後の動作も保証するものではありません。(もちろん極力対応していくつもりですが)</li>
<li><span style=”text-decoration: line-through;”>WordPressMUでの動作確認はかなり不充分ですので、その点ご了承ください。</span>WordPress3.0よりMUと統合されていますが、未検証です。</li>
<li>同MUでのメール送信の際の差出人メールアドレスへのマルチドメインは未検証です。(問題なく動いてくれそうですが・・・)</li>
<li>Page/Postスラッグのチェック機能は<span style=”color: #ff0000;”>半角英数のみ</span>許可する or 許可しないのオプションです。</li>
<li><span style=”color: #ff0000;”>シンプル化のためのオプション値を大幅に見直した都合により、v.0.82以前との当該オプションは互換性がありません。</span></li>
<li><span style=”color: #000000;”>シンプル化の設定一覧(テーブル)に1行単位に色を変えるスタイルを適用していますが、IEは正しく表示されません。</span></li>
<li><span style=”color: #000000;”>シンプル化の設定一覧ラベル(権限グループ名)が日本語表示されない場合があります。(日本語表示されているWP2.8.4環境で、Role Managerを無効化&削除しましたが、問題なく日本語表示されていますので、切り分けに至っていません。)</span></li>
<li>ご利用のWebサーバ(Apache)がCGIモードの場合は、ログイン画面へのHTTP Digest認証は機能しません。</li>
<li>以前から気長にリファクタリングを想定中ですが、オプション値のバリデーションがほとんど実装されていませんので、ご了承ください。</li>
<li>まだ実装は不十分ですが、Niche PatchはJavaScriptがONの状態でのみ正しく動作します。OFFの場合はサイトトップにリダイレクト処理しています。(今後はリダイレクト先を指定可能なように対応予定)</li>
<li><span style=”color: #808080;”><span style=”text-decoration: line-through;”>バージョン(v.0.58)のメインとなるCMS運用のためのシンプル化機能は、オプションがONであると同時に、便宜上「ユーザ作成権限」が無い(つまり管理者でない)場合に動作します<span style=”color: #888888;”>。</span></span></span><span style=”color: #0000ff;”><span style=”color: #888888;”><span style=”text-decoration: line-through;”>※細かい機能ごとのオプション設定は要望があれば検討します。</span></span>v.0.84でグループ権限ごとに設定できるように対応しました。</span></li>
<li>wp_list_pages()で実際に表示されるページ一覧は、menu_order(=ページ順序)の次にpost_title(=ページタイトル)の文字コード順のようですので、同じmenu_orderの場合、並び順のパっと見では順番操作できていないように勘違いしやすいので注意してください。(順番操作ボタンを+/-ではなく↑/↓のように1件ずつ確実に入れ替えていく処理も考えましたが、post_statusとの関連でダッシュボードのページ管理一覧を表示しているモードによって隠れているページとの順序性をどうするかという点で仕様を詰め切れそうにないので見送りました。)</li>
<li>投稿タイムスタンプのチェックは、ページの場合に動作しません。(今後調査します)</li>
<li>「保存」「公開」ボタンのonclickイベントを利用していますが、他プラグインとの競合は未検証です。(こちらも追って、調査していきます)</li>
<li>投稿スラッグ/ページスラッグの必須入力オプションは、クイック編集では動作しません。</li>
</ol>
<h3>改修履歴</h3>
[v.0.94]2010.09.07
<ol>
<li>タイトルや記事中でショートコード[site_name]、[url]を利用可能に。</li>
</ol>
[v.0.93]2010.07.21
<ol>
<li>Page Category Plusプラグインが有効の場合にのみ、ページのカテゴリ未選択の警告オプションを有効とする対応</li>
<li>ダッシュボードの投稿/ページ編集モードの判別方法のWordPress3.0対応</li>
</ol>
[v.0.92]2010.07.13
<ol>
<li>WordPress3.0のCMS簡易表示機能でダッシュボード体裁崩れの対策</li>
</ol>
[v.0.91]2009.12.15
<ol>
<li>WordPress2.9と「スラッグ入力」オプションの競合不具合対策</li>
</ol>
[v.0.90]2009.12.14
<ol>
<li>Gmail受信(連携)機能を追加</li>
</ol>
[v.0.89]2009.10.22
<ol>
<li>NichePatchプラグインのオプション値授受方法をPOSTからGETに変更</li>
</ol>
[v.0.88]2009.09.25
<ol>
<li>予約投稿失敗への回避(あくまでサーバ側で自身への名前解決できない場合への対処です)</li>
<li>メール投稿失敗への回避(同上)</li>
<li>投稿スラッグ/ページスラッグ必須入力の場合の利用可能文字種にハイフンを追加しました。</li>
</ol>
[v.0.87]2009.09.17
<ol>
<li>MU対応の一環で、WordPressからメール送信する際の差出人メールアドレスに変数%mydomain%を利用可能にしました。(これにより、MUの各ユーザをサブドメイン運用していた場合に、@以降にサブドメインが適用されます。)</li>
<li>タグクラウド出力順を任意に制御できる機能を追加しました。この機能はあまり露出しないラグ用スラッグ名でソートする機能のため、「01-tagslug」「02-tagslug」のようにすることで、制御可能です。(01-などはパーマリンク設定によってはURLに露出する場合があります。)</li>
<li>pluginsディレクトリ、themesディレクトリを隠蔽する機能(v.0.50実装済み)はWordPress2.8以降は不要なのでバージョンチェックにより無効化するように対処しました。</li>
</ol>
[v.0.86]2009.08.28
<ol>
<li>ダッシュボード左上のロゴを任意素材に差し替え可能なように対応しました。</li>
<li>ページスラッグやポストスラッグ未入力 or 半角英数以外の場合に更新できないチェック機能を追加。</li>
</ol>
[v.0.85]2009.08.26
<ol>
<li>開発環境を識別するラベルをブラウザ最上部に固定するように変更しました。</li>
<li>シンプル化設定テーブルで、「管理者」(Administrators)グループは「ツール」「設定」を消せない仕様に変更しました。(Niche Patchを無効化しないと設定変更できなくなってしまいますので)</li>
<li>(リンク)ファイルサイズのJSON取得先サーバを自前に変更しました。</li>
</ol>
[v.0.84]2009.08.15
<ol>
<li>シンプル化設定テーブルの色分け用CSSの衝突不具合回避</li>
</ol>
[v.0.83]2009.08.14
<ol>
<li>ファイルサイズ出力機能のIE不具合対応</li>
<li>ダッシュボードシンプル化の詳細オプション対応</li>
</ol>
[v.0.82]2009.06.18
<ol>
<li>たびたびの検証不足でファイルサイズ出力機能を動作させるためのjQuery読み込みが抜けていました。 (正確にはv.0.80でソースリファクタリングしたときの弊害)</li>
</ol>
[v.0.81]2009.06.17
<ol>
<li>検証不足で不必要な箇所にmetaタグ出力があったため改修 (XTHML ValidなWordPressを汚さないように・・・)</li>
</ol>
[v.0.80]2009.06.17
<ol>
<li>開発環境判定でホスト名設定な機能を追加</li>
<li>リンクファイルの形式に合わせたアイコン表示機能を追加</li>
<li>リンクファイルのファイルサイズを表示する機能を追加</li>
<li>開発環境判定ONかつ開発環境動作の場合に、投稿ページで「カテゴリ追加」が動作しない不具合の改修</li>
<li>window.onloadハンドラからリスナー方式に変更</li>
</ol>
[v.0.70]2009.02.07
<ol>
<li>開発環境判定機能をリリース</li>
</ol>
[v.0.60]2009.02.04
<ol>
<li>ログイン画面へのHTTP Digest認証機能をリリース</li>
<li>v.0.58リリースのCMSシンプル化機能で、権限グループによっては、意図せずダッシュボードメニューの「設定」が表示されてしまっていたので、非表示の対応</li>
</ol>
[v.0.59]2009.01.28
<ol>
<li>CMS運用のための<span style=”color: #ff0000;”>+1</span>のシンプル機能リリース</li>
<li>サーバ(PHPバージョン or 設定?)によってはCMSシンプル化機能が動作しなかった不具合(strposの問題?)の修正</li>
</ol>
[v.0.58]2009.01.27
<ol>
<li>CMS運用のための13のシンプル機能リリース</li>
<li>ページの場合に「カテゴリチェック無し」 or 「未選択のみ」が不正に動作していた不具合の修正※<a href=”http://www.stuff.yellowswordfish.com/page-category-plus” target=”_blank”>Page Category Plus</a>(v.2.2で検証)を利用している場合に、当該オプションがONであれば正しく動作します。</li>
</ol>
[v.0.51]2009.01.15
<ol>
<li>WordPress2.7不具合対応(投稿タイムスタンプチェックとカテゴリチェック)</li>
</ol>
[v.0.50]2009.01.10
<ol>
<li>ページの表示順操作の対応</li>
<li>テーマディレクトリを隠蔽するためにindex.html生成機能追加</li>
</ol>
<h3>今後の対応</h3>
開発環境の識別条件をもうすこしフレキシブルに設定可能にするよう考えています。

ログイン画面へのHTTP Digest認証機能のIDとパスワードは複数指定可能なようにしたい。

また、保存パスワードは可能ならばハッシュ化してDB保存しておきたい。

HTTP認証ID、パスワードのリマンド機能の要不要、その実装方法なども検討予定です。

なお、v0.60からNiche Pacheのオプション値を”false”(文字列)から、false(真偽値)に変更しています。

これは”false”(文字列)のままだと、テキスト指定のオプション値がNULLの場合に”false”(文字列)になってしまう歪な現象を避けるための対処です。

ソースレビューだけですが、JavaScriptソースを除いて、オプション値が”false”(文字列)かの判定は過去バージョンでは存在しないため、影響は出ないはずですが、もし過去バージョンですでに運用されている場合は、大変お手数をおかけしますが充分にテスト実施のうえ、バージョンアップしてください。

さらに本来は”true”(文字列)も、true(真偽値)に変更すべきですが、現状では大勢に影響はないものと判断(むしろ変更したことによるソース修正&検証の影響が大きい)し、片手落ち感が残りますが、既存のままとしています。  プラグインの配布方法、とくにバージョンアップ時の通知方法を調べる。

その他、思いつきでニッチにふさわしいパッチがあれば、プラグイン実装していく。  日本語決め打ちではなく、多国語対応方法も気長に調べていきたい。

→ <a href=”http://spais.jp/php/wordpress-%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B93/2008-08-01″ target=”_blank”>SPaiS WordPress プラグインの作り方(3) ステップ1:翻訳の仕組み</a>