the_content に標準でフックされる関数

WordPressのロゴ。

the_content は、Wordpress の記事のテキストが与えらたパラメータです。 標準的な WordPress では、the_content を対象とするフィルタがいくつか登録されています。 それらがどのようなフィルタであるかを一覧して調査しました。

デフォルト設定の確認

wp-includes/default_filters.php ファイルを確認します。 WordPress バージョンによってファイル名や記述形式、登録されているフィルタが変更される可能性があります。

the_content で検索をするなどすると、 直ぐにフィルタが登録されている場所を確認することが出来るはずです。 WordPress v3.8~ では次の 1 + 6 種類が登録されていました。

foreach ( array( 'the_content', 'the_title', 'wp_title' ) as $filter )
	add_filter( $filter, 'capital_P_dangit', 11 );
add_filter( 'comment_text', 'capital_P_dangit', 31 );

add_filter( 'the_content', 'wptexturize'        );
add_filter( 'the_content', 'convert_smilies'    );
add_filter( 'the_content', 'convert_chars'      );
add_filter( 'the_content', 'wpautop'            );
add_filter( 'the_content', 'shortcode_unautop'  );
add_filter( 'the_content', 'prepend_attachment' );

ほぼ標準の関数

関連ページ「あるフィルターに適用された関数(フック)をすべて出力する」のように、 the_content にフックされたすべての関数を出力して一覧したところdo_shortcode関数もフックされています。

この関数はdefault_filters.phpの中では確認することができません。 wp-includes/shortcodes.php に含まれます。

各関数の簡単な解説

capital_P_dangit

"Wordpress" などの誤表記を "WordPress" に変更して修正します。 先のコードを見ると分かりますが、the_content 以外に the_title などにも適用されています。

関数リファレンス/capital P dangit

wptexturize

引用符やアポストロフィ、ダッシュなどの記号を変換します。<pre><script> などのテキストに含まれるそれらは対象から外れます。

Function Reference/wptexturize

convert_smilies

西洋、欧米系の顔文字を変換します。日本のような顔文字が変換されるものではありません。

Function Reference/convert smilies

convert_chars

<title> 要素や <category>要素などのコンテンツに関係ないメタタグを削除します。 また、終了記号 / のない <br><hr> などを
に変換するなどして XHTML 基準のフォーマットにします。

Function Reference/convert chars

wpautop

入力された改行を <br/> に変換したり、閉じられていないテキストを <p> 要素で閉じて出力される HTML を調整します。 自動調整では不都合が多いので削除されがちな関数です。

Function Reference/wpautop

do_shortcode

ショートコードをテキスト中から探し、実行する関数です。

関数リファレンス/do shortcode

shortcode_unautop

shortcode(マクロなどの機能を使うための記述)に <p> 要素を適用しないための関数です。

Code Reference/shortcode_unautop

prepend_attachment

日本語で解説されている方がどうにもいらっしゃらないようですが(2014.11.24現在)、 ソースコードを読む限り、添付されたファイルなどから出力される? <video> または <audio> 要素を、<p> 要素で閉じて調整するための関数のようです。 名前から察するに、新たに類似する要素が現れた場合に、この関数によって処理される可能性があります。

ただ HTML5 では、video 要素も audio 要素もフローコンテンツに成り得るので自動で閉じる必要性はあまりなさそうな気がします。 文脈として正しい形式に収まることが保障されるわけでもなさそうですし。

Code Reference/prepend_attachment

削除しても構わない関数

標準で追加されている多くのフィルタが、少なくとも一回は the_content によって出力されるテキストの中を全走査することになります。 そのためパフォーマンスを落とす可能性があり、不要なら除去してしまう方が良いフィルタ関数もいくつかあるでしょう。 例えば、capital_P_dangit 関数は、"Wordpress" という文字列を検索する処理を実行します(するはずです。)

削除しても良い関数については WordPress の利用形態に依存するでしょう。 不特定多数のユーザが利用するような場面では、wptexturizeconvert_chars は削除しない方が良いかもしれません。

また入力形態が "ビジュアルエディタ" かあるいは "テキストエディタ" かによっても削除するべき関数は変わるでしょう。 軽量マークアップ言語や HTML を使って、直接テキストエディタを編集するようなユーザであれば、 自動成型する類の関数はすべて不要でしょうし。

まぁただどちらの場合にせよ、パフォーマンスを気にするのであれば capital_P_dangit は削除しても良いと思います。 これはコメントなどにも適用されていますね。