ショートコードの語られない問題

執筆者:

カテゴリ:

The-Unspoken-Problem-of-Shortcodes

ショートコードはWordPressの最高峰の機能の1つです。ショートコードは開発者とサイト制作者の間の架け橋であり、ほぼ好きな場所に精巧なコンテンツを配置できるようにします。プラグイン制作者も、ユーザーがコンテンツを表示する方法と場所の柔軟性を高めることができるため、ショートコードを大いに気に入っています。

ショートコードとは何なのか、どんな見た目なのかをご存じない方のために説明すると、角括弧で囲まれた古風なコード風のテキストのことです。以下のような形をしています:

この特定のものは埋め込みショートコードと呼ばれ、WordPressにデフォルトで組み込まれています。これはURLからコンテンツに動画を埋め込みます。試してみたい場合は、上記のショートコードをサイトにコピー&ペーストするだけです。

裏側では、WordPressがコンテンツ内でショートコードを検出すると、それが処理されて別のものに変換されます。上記の例では、

ショートコードが検出されるたびに、WordPressはショートコード内のURLを取得し、保有する多数のコンテンツプロバイダーと照合します。見つかると、適切なiframe埋め込みコードを取得し、代わりにそれを表示します。

では、ここで何が問題なのでしょうか?括弧付きの短いテキストを入力するだけで完了するので、とても簡単に思えます。

ここでショートコードAPIの登場です..

溢れるショートコード

ショートコードAPIにより、開発者によるショートコードの作成が可能になりました。これにより、開発者はプラグイン内に独自のショートコードを追加できるようになりました。

これは素晴らしいことで、コードのような短いスニペット(それゆえ「ショートコード」と呼ばれます)だけで、初心者も上級ユーザーも実質的にあらゆる種類のコンテンツを好きな場所に配置できるようになりました。

WordPressにはデフォルトでは一握りのショートコードしかありません。数が少ないため、記憶から手入力するのも簡単です。しかし、プラグインをいくつかインストールすると、ショートコードの数は瞬く間に十数個、場合によっては100個以上に跳ね上がります。各ショートコードには独自の属性セットと使用方法の説明があります。各プラグインには、すべてのショートコードがどのように機能するかを説明し、それぞれで使用可能なすべてのパラメーターをリストした何らかのドキュメントがあるはずです。しかし、すべてのショートコードとその属性を暗記しようとするなら、正気とは思えません。

問題は、サイトで利用可能なすべてのショートコードとそれらの使用方法を確認できる一元化された場所が存在しないことです。

問題解決を試みる例

一部のプラグインは、独自のショートコードをすべてアクセスしやすいドロップダウンに表示することで、この問題を解決しようとしています。いずれかをクリックすると、そのショートコードが利用可能なすべての属性とともに出力されます。もう暗記する必要はありません。これは良いことです。

Screen-Shot-2016-06-22-at-11.27.09-AM

さらに進んで、チェックボックスやカラーピッカーを備えた設定ポップアップフォームを追加し、ショートコードの属性を入力できるようにしているものもあります。

Screen-Shot-2016-06-22-at-11.28.54-AM

この解決策はある程度機能します。しかし、各プラグインは独自のショートコードのみを列挙します。そのため、各プラグインが独自形式のショートコードピッカーを作成すると、画面上に複数のショートコードピッカーが表示される事態に遭遇することになります(私自身も以前経験しました)。

Screen-Shot-2016-06-22-at-11.22.41-AM

言い換えれば、各プラグインがそれぞれ勝手に動作し、独自のショートコードに対して独自の解決策を実装しています。一部のプラグインは「メディアを追加」ボタンの横に新しいボタンを追加するか、TinyMCE内に新しいボタンを追加します。

これを聞いて、「他のプラグインのショートコードも収集して、自分のドロップダウンやショートコードピッカーに含めればいいのでは?」と思うかもしれません。まさに私もそう考えました。しかし、これは言うは易く行うは難しです。その理由は追って説明しますが、まずは理想的な解決策がどのようなものになるかを見てみましょう。

理想的な解決策

完璧な計画は、サイトで利用可能なすべてのショートコードを収集し、リストを提示してすべての属性の入力も支援してくれるプラグインを作成することです。そして、新しいプラグインをインストールするたびに、新しく導入されたショートコードもすべて同様に提示されます。

簡単にアクセスできるよう、すべてのショートコードが1か所に集約されている場所を想像してみてください。各ショートコードには、その機能とどのプラグインに属しているかが記載されています。そして利用可能な属性ごとに、ラベル、値を適切に選択する方法、説明が用意されている様子を想像してみてください。ドロップダウン、カラーピッカー、ラジオボタン、トグルなどが表示されます。

このようなものがあれば、ウェブサイトやコンテンツ制作者としての私たちの生活はもっと楽になるはずです。使用したいスライダーの生成されたショートコードをコピーするためだけに、別々のドキュメントや管理画面のあちこちを確認する必要はもうなくなります。

注意すべき点(落とし穴)

残念ながら、現在そのようなことを行うのは非常に困難です。ショートコードのすべての詳細を知る確実な方法はありません。すべてのショートコードのリストを取得することはできますが、実際のタグ/名前だけであり、属性のリストやそれらが何をするのか、文字列、色、数値といったそれらの型などの追加情報を取得することはできません。また、各属性についての説明の類も取得できません。

開発者の方々への注記:確かにshortcode_atts関数に新しく追加された第3引数がありますが、これは必須の引数ではありません。そのため、世界中のすべてのプラグイン開発者がこれを実装しない限り、ショートコードのすべての属性を特定する確実な方法は依然としてありません。

ショートコードAPIには、ショートコードの説明の追加、属性の型キャスト、または属性の説明を追加するための機能が用意されていません。そして、WordPress自体がショートコードにアクセスするための一元化された領域を追加しない限り、このような機能が作られることはないと思います。

結論

現在、ショートコードを整理するタスクは各開発者に委ねられています。WordPress内で一元化された手法が開発されない限り、バックエンドに複数の「ショートコードを追加」ボタンが表示され続けることを覚悟してください。このような機能をWordPressコアに追加すべきかどうか自体、それだけで大きな議論となります。

代替手段

これに異なる方法でアプローチしているページビルダープラグインもあります。ショートコードをプログラムで検出する代わりに、ユーザーがショートコードのすべての詳細を手動で入力できるショートコードマッパーを備えています。完了すると、ページビルダー内で利用できるようになります。これは機能しますが、自分のサイト内でのみ利用可能です。

私たちPage Builder Sandwichは、このショートコードの難問を解決できることを願ってあるものを開発しています。進捗状況の通知を受け取るには、以下のニュースレターにご登録ください。