サポート » 使い方全般 » moreタグを有効にするPHPの書き方について

  • 解決済 naso

    (@naso)


    お世話になります。

    現在、固定ページ上で

    <?php
        $posts = get_posts('numberposts=5&category_name=sample');
        global $post;
        if($posts): foreach($posts as $post): setup_postdata($post);
    ?>
        <a>"><?php the_title(); ?></a><?php the_time('Y年n月j日'); ?>
        <?php the_content(); ?>
        <?php endforeach; endif; ?>

    という処理を実行しており、投稿記事全文を表示させるようにしています。
    この処理を、投稿記事にmoreタグを挿入した場合、moreタグ以前の記事のみを表示させるよう変更したいのですが、

    <?php the_content(); ?>

    のままですと全文表示され、

    <?php the_content(); ?>
    ↓
    <?php the_content('more_link_text', strip_teaser, 'more_file'); ?>

    とするとmoreタグ以下の記事が表示されてしまいます。
    moreタグ以前の記事を表示させるには、どのように書き換えたら良いでしょうか?

    テーマはTwentyTenです。宜しくお願いします。

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

    (@jim912)

    nasoさん、こんにちは。

    記事の全文を表示するか、more以前を表示するかは、グローバル変数の $more で判別されます。

    <?php
        $posts = get_posts('numberposts=5&category_name=sample');
        global $post, $more;
        $more = false;
        if($posts): foreach($posts as $post): setup_postdata($post);
    ?>
        <a>"><?php the_title(); ?></a><?php the_time('Y年n月j日'); ?>
        <?php the_content(); ?>
        <?php endforeach; endif; $more = true; ?>

    こんな感じでいかがでしょうか。

    jim912 さん

    こんにちは、ご回答ありがとうございます。

    教えていただいたコードに書き換えてみたのですが、moreタグは反映されませんでした…
    $more=0;としても(falseと同じことなのですが)ダメでした。

    ループ処理に問題があるのでしょうか。
    the_excerpt() に置き換えれば自動的に省略してくれるのですが、
    画像を表示させたいので、the_content()を使用するしかありません。
    画像だけを取ってくる関数を自作できれば解決できると思うのですが、そんな技術は持っていないし…

    どうしたものか、です。。

    モデレーター jim912

    (@jim912)

    nasoさん

    $moreは、setup_postdata() で設定されるようでしたので、ループの外側でなく、the_content();の前後で実行するようにしてみてください。

    <?php
        $posts = get_posts('numberposts=5&category_name=sample');
        global $post, $more;
        if($posts): foreach($posts as $post): setup_postdata($post);
    ?>
        <a>"><?php the_title(); ?></a><?php the_time('Y年n月j日'); ?>
        <?php $more = false; the_content(); $more = true; ?>
        <?php endforeach; endif; ?>

    jim912さん

    続きを読む、表示されました!
    解決までお付き合いいただき、本当にありがとうございました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「moreタグを有効にするPHPの書き方について」には新たに返信することはできません。