HOME>情報備忘録>[WordPress]囲み型ショートコードの改行とかエスケープとか。

[WordPress]囲み型ショートコードの改行とかエスケープとか。

囲み型ショートコードのコンテンツを普通に受け取ると、改行があったりセミコロンとかがエスケープされた状態になっている。 JavascriptとかPHPを書く場合、まじうっとおしいので何とかしてみる。

the_content()を使わない方法としては

single.php

  1. <?php
  2. $content = do_shortcode($post->post_content);
  3. //$content = str_replace(']]>', ']]&gt;', $content);
  4. echo apply_filters('the_content', $content);
  5. ?>

とすればOK。WordPressらしい方法なら

do_shortcode() は、'the_content' のデフォルトフィルターとして、プライオリティ11で登録されます。

ショートコード API - WordPress Codex 日本語版

とあるので、

functions.php

  1. <?php
  2. function priority_change()
  3. {
  4.     remove_filter( 'the_content', 'do_shortcode', 11 );
  5.     add_filter('the_content', 'do_shortcode', 1);
  6. }
  7. add_action('init', 'priority_change');
  8. ?>

とかやってもいける。

ただし、改行コードとかエスケープされたコンテンツが来ることが前提のショートコードを使ってた場合は問題が起きるので気をつけましょう。

もっといい方法がありそうな気がするんだよなぁ。

投稿日 2012年1月 8日 06:00
カテゴリ プログラム | 設定
タグ WordPress
トラックバック URL http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1251

コメント

コメントする
Name
Email Address
URL