リンク前のコンテンツのスタイルを変更したいのですが、single.phpを使用します。
もっと具体的に言うと、ホームページ上の私の投稿はすべて要約しかなく、その他のテキストはmoreタグの使用により切り取られています。それで、「もっと読む」をクリックすると、以前にホームページで見た要約から始めて、完全な投稿を見ることができます。私はこの要約を他のテキストと区別して、たとえば大胆に付け加えて、彼に既に読んだものをユーザーに見せたいと思います。
残念ながら、これは不可能だと思います。それは...ですか ?
使用: http://codex.wordpress.org/Function_Reference/the_content#Overriding_Archive.2FSingle_Page_Behavior
そして$ strip_teaserパラメータ: http://codex.wordpress.org/Function_Reference/the_content#Usage
single.phpでは、<?php the_content(); ?>
を次のように置き換えます。
<?php if( strpos(get_the_content(), '<span id="more-') ) : ?>
<div class="before-more">
<?php global $more; $more=0; the_content(''); $more=1; ?>
</div>
<?php endif; ?>
<?php the_content('', true); ?>
これを解決するために、2つの関数を作成してthe_content()
をbeforeとafter-functionに分割しました。
class MyClass
{
/**
* Echo the content before the <!--more--> tag
*/
public static function getContentBeforeMore()
{
global $more;
$more = false;
the_content(false);
$more = true;
}
/**
* Echo the content after the <!--more--> tag
*/
public static function getContentAfterMore($removeMoreTag = true)
{
$content = get_the_content(null, true);
$content = apply_filters( 'the_content', $content );
$content = str_replace( ']]>', ']]>', $content );
// Remove the empty paragraph with the <span id="more-.."></span>-tag:
if($removeMoreTag)
{
$content = preg_replace('/<p><span id="more-\d+"><\/span><\/p>/m', '', $content);
}
echo $content;
}
}
テンプレートでは、このように使用することができます。
<p class="intro"><?php MyClass::getContentBeforeMore(); ?></p>
... some other styling, like date or something ...
<?php MyClass::getContentAfterMore(); ?>