サポート » 使い方全般 » カスタム投稿で続きを読むボタンのリンクが飛ばない(リンクが#になっている?)

  • 解決済 ykkuio825

    (@ykkuio825)


    いつもお世話になっております。
    どうしても解決せずアドバイスをいただけないでしょうか。

    カスタム投稿の記事内で別記事を紹介する際に抜粋文を表示させたく以下のコードを書きました。
    (※項目はadvanced custom fieldの関連です)

    <?php $awasete = get_field('r_relation'); ?>
    <?php if($awasete): ?>
      <?php foreach((array)$awasete as $value):?>
      <?php setup_postdata($value); ?>
          <div class="box2">
          <a href="<?php echo get_the_permalink($value->ID); ?>">
              <?php if(get_the_post_thumbnail( $value->ID )): ?>
                 <?php echo get_the_post_thumbnail( $value->ID,'thumbnail' ); ?>
                   <div class="datetext"><?php echo get_the_date('Y.m.d',$value->ID); ?>
             </div>
             <div class="text"><h3><?php echo $value->post_title; ?></h3>
                  <?php echo get_the_excerpt($value->post); ?></div>
              <?php endif; ?>
          </a></div>
      <?php endforeach; ?>
      <?php endif; ?>

    この記述で本文及びサムネイルのリンク先は別記事になっているのですが、
    続きを読むボタンだけがクリックするともともとのページのトップに戻ってしまいます。

    何が悪いのか見当もつかず、アドバイスをいただけないでしょうか。
    恐れ入りますが、どうぞよろしくお願いいたします。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • はじめまして。
    以下のように変更された場合ってどうなりますでしょうか。

    //変更前
    <?php echo get_the_excerpt($value->post); ?>
    
    //変更後
    <?php echo get_the_excerpt($value->ID); ?>
    トピック投稿者 ykkuio825

    (@ykkuio825)

    ご回答ありがとうございます。

    <?php $awasete = get_field('r_relation'); ?>
    <?php if($awasete): ?>
      <?php foreach((array)$awasete as $value):?>
      <?php setup_postdata($value); ?>
          <div class="box2">
          <a href="<?php echo get_the_permalink($value->ID); ?>">
              <?php if(get_the_post_thumbnail( $value->ID )): ?>
                 <?php echo get_the_post_thumbnail( $value->ID,'thumbnail' ); ?>
                              <div class="datetext"><?php echo get_the_date('Y.m.d',$value->ID); ?></div><div class="text"><h3><?php echo $value->post_title; ?></h3>
                  <?php echo get_the_excerpt( $value->ID ); ?></div>
              <?php endif; ?>
          </a></div>
      <?php endforeach; ?>
      <?php endif; ?>

    いただきましたコードを入れてみましたが、やはりもともとのページのトップに戻ってしまいます。。

    こんにちは

    setup_postdata() の引数は、$post グローバル変数へのリファレンスを指定しなければなりません。
    https://wpdocs.osdn.jp/関数リファレンス/setup_postdata

    あと、wp_reset_postdata() で $post をリセットしておいたほうがいいかなと思います。

    <?php foreach( (array)$awasete as $post ):?>
    	<?php setup_postdata( $post ); ?>
    	(省略)
    <?php endforeach; ?>
    <?php wp_reset_postdata(); ?>

    なるほど・・・。
    $value->IDにきちんと値が格納されているか確認できますか?

    <?php echo get_the_excerpt( $value->ID ); ?>

    の直後に

    <?php var_dump( $value->ID ); ?>

    を入れて何が表示されるか教えて欲しいです。

    トピック投稿者 ykkuio825

    (@ykkuio825)

    お二方とも本当にありがとうございます。

    >ishitakaさん

    リンク先拝見しました。知らないことばかりです。。。勉強になります。

    <?php $awasete = get_field('r_relation'); ?>
    <?php if($awasete): ?>
      <?php foreach((array)$awasete as $value):?>
      <?php setup_postdata($value); ?>
      <?php foreach( (array)$awasete as $post ):?>
    	<?php setup_postdata( $post ); ?>
          <div class="box2">
          <a href="<?php echo get_the_permalink($value->ID); ?>">
              <?php if(get_the_post_thumbnail( $value->ID )): ?>
                 <?php echo get_the_post_thumbnail( $value->ID,'thumbnail' ); ?>
                    <div class="datetext"><?php echo get_the_date('Y.m.d',$value->ID); ?></div><div class="text"><h3><?php echo $value->post_title; ?></h3>
                  <?php echo get_the_excerpt( $value->post ); ?></div>
              <?php endif; ?>
          </a></div>
    <?php endforeach; ?>
    <?php endforeach; ?>
    <?php wp_reset_postdata(); ?>
    <?php endif; ?>

    いただきましたコードを以上のように記述することで、続きを読むボタンのリンクが正しくなりました…!!

    >halbotさん
    いただきましたコードを直後に入れてみたところ、int(68)が表示されました。
    恐れ入りますが、この表示の意味?を教えていただけないでしょうか?
    (調べてみたのですがうまくヒットせず・・・)

    解決したようでよかったです。

    >いただきましたコードを直後に入れてみたところ、int(68)が表示されました。
    >恐れ入りますが、この表示の意味?を教えていただけないでしょうか?
    >(調べてみたのですがうまくヒットせず・・・)

    var_dumpはPHPで用意されている関数でして、調査をする際に変数などに何が入っているか表示するためのものです。今回の場合はint(68)はおそらく抜粋記事のIDですね。
    もしまた別に問題が起きた際にはぜひご活用ください。

    https://techacademy.jp/magazine/11585

    • この返信は5年、 10ヶ月前にhalbotが編集しました。
    トピック投稿者 ykkuio825

    (@ykkuio825)

    >halbotさん

    投稿を見てみたところ、68はおっしゃる通り抜粋記事でした。
    リンク先拝見します。

    本当に勉強になりました。

    ありがとうございました!!

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「カスタム投稿で続きを読むボタンのリンクが飛ばない(リンクが#になっている?)」には新たに返信することはできません。