web-dev-qa-db-ja.com

抜粋にHTMLを含む方法

Leafテーマを使います

ホームページの抜粋をフォーマットすることはできません。

私はプラグインを試して、theme-functions.phpファイルをいじってみましたが、役に立ちませんでした。

抜粋には、ほんの少しの書式設定だけで、それ以上のものは必要ありません。

それは可能でしょうね。

1
user37445

抜粋は次のコードで - > wp-includes/format.phpに作成されます。

function wp_trim_excerpt($text) { // Fakes an excerpt if needed
    global $post;
    if ( '' == $text ) {
        $text = get_the_content('');
        $text = apply_filters('the_content', $text);
        $text = str_replace('\]\]\>', ']]>', $text);
        $text = strip_tags($text);
        $excerpt_length = 55;
        $words = explode(' ', $text, $excerpt_length + 1);
        if (count($words)> $excerpt_length) {
            array_pop($words);
            array_Push($words, '[...]');
            $text = implode(' ', $words);
        }
    }
    return $text;
}

抜粋で通常見られるWPの動作を変更するには、最初にこの関数を削除します(コアコードからではなく、functions.phpに配置してremove_filter()を使用します)。

remove_filter('get_the_excerpt', 'wp_trim_excerpt');

次に、抜粋を制御するための新しい関数を作成する必要があります。そうすれば、開始点としてWP coreから上記の関数をコピーできます。別の名前を付けます。その後、必要なものを変更してください。たとえば、抜粋でタグを許可したい場合は、次の行を変更します。

$text = strip_tags($text);

これに:

$text = strip_tags($text, '<b>');

複数の許可されたHTMLタグが必要な場合は、それらを後にリストしてください。それであなたのfunctions.phpのあなたの新しい関数はこんな感じになるでしょう:

function nb_html_excerpt($text) {
    global $post;
    if ( '' == $text ) {
        $text = get_the_content('');
        $text = apply_filters('the_content', $text);
        $text = str_replace('\]\]\>', ']]&gt;', $text);
        $text = strip_tags($text, '<b>');
        $excerpt_length = 55;
        $words = explode(' ', $text, $excerpt_length + 1);
        if (count($words)> $excerpt_length) {
            array_pop($words);
            array_Push($words, '[...]');
            $text = implode(' ', $words);
        }
    }
    return $text;
}

そして最後に、WPに新しい関数で抜粋をフィルタリングするように指示する必要があります。 functions.phpに次のようなフィルタを追加してください。

add_filter('get_the_excerpt', 'nb_html_excerpt');
5
NickJAB