サポート » バグ報告と提案 » the excerptとショートコードは共存できない?

  • 解決済 aratakojima

    (@aratakojima)


    立て続けに投稿です。すいません。

    ショートコードに次のようなコードを書いたとします。

    add_shortcode('activity_text', 'activity_text_func');
    function activity_text_func ($atts, $content) {
    return '<div class="activity">
    <p class="title">活動内容</p>
    <div class="text">' . $content . '</div>
    </div>';
    }

    これを記事に埋め込み、その次に文章をつなげるとします。例えば、こんな感じです。

    [activity_text]
    ここにテキスト
    [/activity_text]
    本文

    この記事の抜粋に何も入力していない場合、テンプレートタグのthe excerptで記事の要約文を作ろうとすると、ショートコードの[activity_text]に挟まれている文章は出力されずに、本文のみが出力されるようになっているみたいです。

    たぶん、このような仕様になっているのでしょうが、the excerptに任意の値を持たせられるなど、そういった解決策があってもよいとは思いました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター IKEDA Yuriko

    (@lilyfan)

    wp-includes/formatting.php を見ると、wp_trim_excerpt() で明示的に strip_shortcodes() してから the_content フィルターを通していますね (do_shortcodes() は the_content フィルターで実行される)。

    したがって、自前で抜粋を作る関数を作って、get_the_excerpt フィルターに優先順序 9 で add してしまえば wp_trim_excerpt() より先に実行されるので、意図する挙動ができるかもしれません。

    少なくとも、WordPress コアをいじらず、フィルター関数の add/remove でなんとかできると思います。

    トピック投稿者 aratakojima

    (@aratakojima)

    なるほど。優先順位を変えるという話になってくるわけですねー。

    ちょっといろいろといじってみます。ありがとうございます。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「the excerptとショートコードは共存できない?」には新たに返信することはできません。