web-dev-qa-db-ja.com

get_the_contentを使用したプラグインで<! - more - >タグの問題が発生する

Woothemesの "Our Team"プラグインをテストして、将来のプロジェクト目的でどのように機能するかを確認します。

このプラグインは、CPTでチームメンバーと、ユーザーがページにメンバーを表示できるようにするためのショートコードを使用します。

私がぶつかっている問題は、ショートコードによって出力されるコンテンツが<!--more-->タグを尊重していないということです。 196行目の woothemes-our-team-template.php ファイルでは、次のようにget_the_contentが使用されているためです。

$content = apply_filters( 'woothemes_our_team_content', wpautop( get_the_content() ), $post );

"woothemes_our_team_content"と呼ばれることができるはずのフィルタもあるようですが、私が自分のfunctions.phpに何を追加しようとしても、<!--more-->タグがあることを認識させることができません。私のすべての努力は、すべてのコンテンツを削除することに成功しました。

基本的に私はフィルタにフックして、<!--more-->タグを認識させてから、「Read More」を「Read Full Bio ...」と言うように変更します。

誰もがこれを達成するための最良の方法について何か提案がありますか?

前もって感謝します!

1
Syrehn

フルコンテンツの表示とティーザー(投稿の開始からその他のタグの呼び出しまでの部分)の間の論理的な分岐は、$moreグローバル変数によって決まります。これは他のグローバルなものなどに依存します。重要な点は、必要に応じて0に設定されないことです。おそらく、通常のループではゼロに設定されていないのに、これをコンテキストで実行しているからです。

このようなものでうまくいくはずです。

add_filter( 'woothemes_our_team_content', function () {
    global $more;
    $real_more = $more;
    $more      = 0;
    $output    = wpautop( get_the_content() );
    $more      = $real_more;

    return $output;
} );

リンクを操作するか、the_content_more_linkにフックしてカスタマイズできます。

2
Rarst