web-dev-qa-db-ja.com

ショートコードエスケープ付きのthe_excerpt()またはget_the_excerpt

ドロップキャップのショートコードが最初の文字をラップしている投稿はほとんどありません。

[dropcap]T[/dropcap]his is a dropcap. 

このショートコードを置き換えると、

<span class="dropcap">T</span>his is a dropcap.

しかし、これらの記事でthe_excerpt()またはget_the_excerpt()を呼び出すと、次のように返されます。

"his is a dropcap".

ショートコードが存在しない場合と同じように "This is a dropcap"を返す必要があります。

3
N2Mystic

get_the_excerptフィルタにフックしてデフォルトのwp_trim_excerpt関数を上書きすることで、WordPressに抜粋のショートコードを実行させることができます。これは、Chipで示されるように抜粋からショートコードタグを削除する責任があります。

add_filter('get_the_excerpt', 'do_my_shortcode_in_excerpt');
function do_my_shortcode_in_excerpt($excerpt) {
    return do_shortcode(wp_trim_words(get_the_content(), 55));
}

これはthe_excerpt()get_the_excerpt()の両方の出力に適用されます。 the_excerpt()出力にのみ適用したい場合は、the_excerpt filterにフックしてください。

add_filter('the_excerpt', 'do_my_shortcode_in_excerpt');
function do_my_shortcode_in_excerpt($excerpt) {
    return do_shortcode(wp_trim_words(get_the_content(), 55));
}
3
Ahmad M

the_excerpt() 関数はショートコードを解析しません。 WordPressは実際には抜粋からショートコード全体を取り除きます。 "T"はショートコードでラップされているので、the_excerpt()による出力は得られません。

最も簡単な解決策はおそらく、あなたがDropcapショートコードを使う投稿のために、Edit PostスクリーンのPost Excerptメタボックスを通して custom excerptを作成することです。

より良い解決策は、CSSのルール以外のものを使用せずに確実に行うことができる何かをするためだけに存在するショートコードを捨てることでしょう。

2
Chip Bennett