WordPressショートコードの狂気と向き合う

Nov 19th (Sat)2011
文字数 2,666文字
所要時間 およそ6
経過時間 1年半前578日経過
最終更新日時 2011 年 11 月 18 日
カテゴリー プログラミング
タグ ,
フィードバック 0件

この投稿は1年半前の記事です。情報が古くなっている可能性があるので、その点ご了承ください。

Dealing with shortcode madnessというナイスエントリーを見つけたので、以前から思っていたことを。WordPressにはショートコードAPIというのがあります。以下のように書くといろんな機能を実現してくれるというものです。Xoopsとかで使われていたBBcodeに似ていますね。

[hoge var=987923]

いまはショートコードを作りやすくするプラグインなどもあるので、使っている人も多いことでしょう。たとえば、このブログではtmkm-amazonというプラグインを使っていて、これはAmazonのアフィリエイトリンクを表示してくれます。こんな感じ。

途中下車 (幻冬舎文庫)

途中下車 (幻冬舎文庫) [書籍]

価格: ¥ 480

著者: 高橋 文樹

出版社: 幻冬舎

出版日: 2005-08

商品カテゴリー: 文庫

ページ数: 168

ISBN: 4344406850

Supported by amazon Product Advertising API

これだけのショートコードはいらない!
これだけのショートコードはいらない!

さて、件のエントリーではだいたい以下のようなことが語られていました。

  • 最近Theme Forestとかを見ていると、どうでもいいショートコードを搭載したテーマが増えているようだ
  • pタグにclass属性を付与するだけのショートコードになんの意味があるのか
  • テーマに付属のショートコードを使ってしまうとそのテーマに縛られるのでよくない!

これに対し、コメントではこんな議論がありました。

  • たしかにその通りだけど、ショートコード便利だよ!
  • テーマに縛られるって、テーマ開発者からすればおいしいよね
  • クライアントにそんなこと行っても意味ない
  • TinyMCEカスタマイズしてボタンつければ全部解決
  • いまなら同意できるけど、正直初心者のときはdivでくくるだけのショートコード作ってたよ!

いわゆる「べき論」なので、意見はそれぞれだと思います。個人的に「divでくくるだけならTinyMCEのボタン作れや」という意見には賛成なので、手前味噌ですが、TinyMCEをチキチキにカスタマイズするなどを読んでください。

さて、人の書いたブログを紹介するだけではしょうがないので、これから僕が考えるショートコードの「べき論」を展開してみたいと思います。

ショートコードのいいところと悪いところ

ショートコードのいいところはもちろん便利なところですが、「誰にとって便利か」というと、作る人にとって便利ということですね。使う側にとってはHTMLもショートコードもマークアップの仕方が違うだけで大して変わらないので、上のエントリーで述べられているようにボタン作ってくれるのが一番いいんでしょうが、TinyMCEのボタンを作るのはけっこうめんどくさいです。ショートコード作って「はい、終り!」ってできるとすごい楽です。その結果として、沢山のショートコードが生まれましたね。「functions.phpに貼っておいてね!」で動くんですから。

一方、悪いところは投稿内に明らかなゴミデータが混入してしまうことです。これはよくあるケースですが、そのテーマやプラグインがWordPressコアのバージョンアップに追随しなくなったとき、これが露見します。テーマに引きずられてバージョンアップできなかったり、他のテーマを使えなかったりする場合もあれば、プラグイン作者が開発を停止してしまってむき出しのショートコードが投稿内に表示されることもあります。上述したWP Tmkm Amazonの場合はけっこう長い間使っていたのに開発者さんがモチベーションを失って開発を終了してしまったので、自分で修正して使い続けています。

というわけで、「利便性」と「失ったときのリスク」をはかりにかけてショートコードを使う必要がありそうです。「とりあえず使ってみる」のは避けるべきかもしれません。

ショートコードはどんなときに使うべきか

これはテーマ・開発者側の視点です。次の2つぐらいしか思いつかないですね。

  1. 動的に内容が変更されるもの(AmazonやTwitterのAPIを叩いたり、ユーザーによって表示を変えたり)
  2. YoutubeやGoogleマップの埋め込みタグのように、出力されるコードの動的な変更は必要としないが、先方の都合で仕様が変わりうるもの

2に関しては、外部APIよりもプラグイン・テーマ作者が力つきる方が先のような気もします。

ショートコードを使わなくなったらどうする?

テーマを変更したり、プラグインを停止したりして使われなくなったショートコードはそのまま出力されてしまいます。これでは困るので、表示されないようにしましょう。

function _abandoned_shortcodes($atts, $content=''){
     return $content;
}
//ショートコードの数だけ登録。hogeの部分をショートコードに
add_shortcode('hoge', '_abandoned_shortcodes');
add_shortcode('fuga', '_abandoned_shortcodes');

これで囲み型も独立型もいけるんじゃないかと思います。場合によっては空行ができてしまったりするとは思いますが、しょうがないですね。もしショートコードを一括削除するプラグインとかあったら、教えてください。

WordPressのプラグインとテーマは分離できるのか

この問題の原因は、プラグインとテーマの役割がかぶっていることにつきると思います。WordPressはウィジェットやショートコード、管理画面の作成など、ほとんどのことをテーマから出来てしまいます。

テーマがいわゆるMVCモデルのビューファイルのようなものであれば、こうした問題は発生しなかったでしょう。ただ、その場合はここまで普及したか疑問ですね。PHP自体がそもそもそういう言語ですが、あまりスキルの高くない人でもそれなりのことができてしまうというのがWordPressの魅力なので。

きちんとしたガイドラインがあれば嬉しいことは嬉しいのですが、正典なきWebの世界ではガイドラインを作ることも参加者の役割なので、いろんな人の書いたいろんな記事を参考にしていくしかないですね。この記事もその一助になることを祈って、筆を置きます。

[PR]

関連投稿

WordPress本

WordPress本

僕が寄稿したWordPres本が出ました

好きな言葉

なにもしなかったということは、悪いことをしなかったということではない — マルクス・アウレリス・アントニヌス, 出典不明

最新電子書籍

  • cover

    東京守護天使 ¥300

    「ああ、ペニー、この世に小説家なんて一人もいなければよかったのにね! それだけで…

  • 北千住ソシアルクラブ表紙

    北千住ソシアルクラブ ¥100

    北千住でひきこもっていた作家志望の男が同居人に追い出されて、ついに外に出た。荒川…

  • 泣きながら、ポークソテー表紙

    泣きながら、ポークソテー ¥0

    私達は雨もりの修繕をするように生きてきました。ひっそりと生きる夫婦の、束の間の幸…

    Free
  • ここにいるよ

    ここにいるよ ¥500

    彼女にはとても素敵な名前があった——ある女性への追想から始まる手記。男が一人の人…

  • cover

    ハムスターに水を ¥500

    大学卒業後、すべてを失って栃木で塾講師として働く「ぼく」。一緒に暮らしている寛美…

高橋先生の処女作

高橋先生の処女作

2001年幻冬舎NET学生文学大賞受賞作です。

Web制作やります

Web制作やります

Web制作のご依頼は株式会社破滅派へ

不定期メルマガ

高橋文樹.comでは、不定期でニュースレターを配信しています。滅多に送らないので是非購読してください。

高橋文樹.comではプライバシーポリシーに準じて登録情報を取り扱います。

はてぶで人気