WordPressはデータベースからの生データをどのようにして_content関数で読み取り可能なフォーマットに変換しますか?
The_contentフィルタが適用されることに気付きましたが、the_contentフィルタは何をするのでしょうか。
デフォルトのフィルタは/wp-includes/default-filters.phpに設定されています。
'the_content'の場合、これは135行目からのものです。
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' );
個々の機能を追跡するには、 http://phpxref.ftwr.co.uk/wordpress/nav.html?_functions/index.html を使用してリンクをたどることができます。
見逃したもの(wp-includes/default-filters.php
、行102):
// Format WordPress
foreach ( array( 'the_content', 'the_title' ) as $filter )
add_filter( $filter, 'capital_P_dangit', 11 );
すべてのフィルタは、グローバル$wp_filter
変数に格納されています。その変数を調べて、どの関数が特定のフィルタにバインドされているかを確認できます。
global $wp_filter;
print_r($wp_filter['the_content']);
出力される配列を正確に理解するには、$wp_filter
変数がどのように構成されているかを知っておくと役立ちます。この行はadd_filter()
関数のソースからのものです。
$wp_filter[$tag][$priority][$idx] = array('function' => $function_to_add, 'accepted_args' => $accepted_args);
しかし、the_contentフィルターは何をするのでしょうか?
Content_filterを使用すると、コンテンツの前後にカスタムコンテンツを返すことができます。
カスタム関数で_contentフィルタを使用する2つの非常に基本的な実用例は次のとおりです。
この例では、コンテンツの前にカスタムコンテンツを返します
add_filter( 'the_content', 'return_before_content' );
function return_before_content( $content ) {
if ( is_singular('post')) {
$before_content = '<p>Text Returned Before the_content</p>';
$content = $before_content . $content;
}
return $content;
}
この例は、コンテンツの後にカスタムコンテンツを返します
add_filter( 'the_content', 'return_after_content' );
function return_after_content( $content ) {
if ( is_singular('post')) {
$after_content = '<p>Text Returned After the_content</p>';
$content = $content . $after_content;
}
return $content;
}