web-dev-qa-db-ja.com

どのようなフィルタが_content関数に適用されますか?

WordPressはデータベースからの生データをどのようにして_content関数で読み取り可能なフォーマットに変換しますか?

The_contentフィルタが適用されることに気付きましたが、the_contentフィルタは何をするのでしょうか。

6
Mohamed Said

デフォルトのフィルタは/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 );
7
Michael

すべてのフィルタは、グローバル$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);
2
Geert

しかし、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;
}
0
Brad Dalton