web-dev-qa-db-ja.com

他のタグの前にのみコンテンツを表示

サイレンテンプレートを使用しています。 homepage.phpでは、このコードはポートフォリオの内容を表示するために使用されます。

print_excerpt(200);

しかし、私は<!--more-->の前にだけ内容を見せる必要があります

私はこれを使用しました:

the_content( $more_link_text, FALSE);

しかし、それは機能していません。すべてのコンテンツが表示されます

5
MajidGh

WordPress関数 get_extended を使用して、文字列のさまざまな部分(<!--more-->タグの前後の部分)を取り出すことができます。 get_extendedは3つのキーを持つ配列を返します。キーmainextendedは重要です。$arr['main']はmoreタグの前の部分、$arr['extended']はmoreタグの後の部分です。

これは次のようになります。

// Fetch post content
$content = get_post_field( 'post_content', get_the_ID() );

// Get content parts
$content_parts = get_extended( $content );

// Output part before <!--more--> tag
echo $content_parts['main'];
13
engelen

残念ながら、抜粋(get_extendedget_extended)をレンダリングすることになっているWordPressのすべての関数は、HTMLタグを適用したり、段落内の改行を変換したりしないようです。

抜粋をフォーマットしてレンダリングする必要がある場合は、このコードを使用することをお勧めします。

global $more;
$more_backup = $more;
$more = 0;
the_content('');
$more = $more_backup;

この回避策では、ループ内にあることを_content()関数に伝え、moreタグの前にコンテンツを取得します。

0
Marco Panichi