サポート » 使い方全般 » WPをバージョンアップした時にget_postsのtagが効かない

  • こんにちは。
    お世話になります。
    よろしくお願いいたします。

    wordpress 4.7.13
    で以下の書き方で問題なく動いていたのですが、
    最新の5.2.2
    にしたところ、意図した表示がされなくなってしまいました。
    記事のタイトルが表示されません。

      <?php $myposts = get_posts( 'orderby=date&order=DESC&numberposts=5&cat=138');?>
      <?php if(count($myposts)):?>
      <?php foreach($myposts as $post) :setup_postdata($post);?>

      <?php
      $posttags = get_the_tags();
      $count=0;
      if ($posttags) {
      foreach($posttags as $tag) {
      $count++;
      if (1 == $count) {
      $tag_id_name= $tag->name.'';
      }
      }
      }
      ?>
      <?php $tag_id_name=mb_ereg_replace(" ","-",$tag_id_name);?>

      <?php if ( in_category(array('138'))): ?>

      <?php
      $postslist = get_posts('tag='.$tag_id_name.'&numberposts=1&cat=30');
      foreach ($postslist as $post) :
      setup_postdata($post);
      ?>

    • <?php the_title(); ?>
    • <?php endforeach; ?>

      <?php endif;?>

      <?php endforeach; ?>
      <?php else:?>
      <?php endif;?>

    以下のように、tag を tag_id の数字で扱うと意図した表示がされるのですが、
    出来れば、今までのようにtag そのままで扱いたいのです。
    何か方法はあるでしょうか?

      <?php $myposts = get_posts( 'orderby=date&order=DESC&numberposts=5&cat=138');?>
      <?php if(count($myposts)):?>
      <?php foreach($myposts as $post) :setup_postdata($post);?>

      <?php
      $posttags = get_the_tags();
      $count=0;
      if ($posttags) {
      foreach($posttags as $tag) {
      $count++;
      if (1 == $count) {
      $tag_id_name= $tag->term_id.'';
      }
      }
      }
      ?>
      <?php $tag_id_name=mb_ereg_replace(" ","-",$tag_id_name);?>

      <?php if ( in_category(array('138'))): ?>

      <?php
      $postslist = get_posts('tag_id='.$tag_id_name.'&numberposts=1&cat=30');
      foreach ($postslist as $post) :
      setup_postdata($post);
      ?>

    • <?php the_title(); ?>
    • <?php endforeach; ?>

      <?php endif;?>

      <?php endforeach; ?>
      <?php else:?>
      <?php endif;?>

    よろしくお願いいたします。

    • このトピックはNaoki-Joが4年、 9ヶ月前に変更しました。
4件の返信を表示中 - 1 - 4件目 (全4件中)
  • こんにちは

    このコードの場合、tag を使用すると文字列によって(空白や「+」、「-」等を含む文字列)は正しく表示されないことがあると思います。tag_id を使用されたほうがいいかと思います。

    出来れば、今までのようにtag そのままで扱いたいのです。

    なぜ、tag のままで扱いたいのでしょうか?
    tag が必要であれば、tag_id と同様に変数に代入しておけばいいのではないでしょうか。

    $tag_id_name= $tag->term_id.'';

    $tag_id_name= $tag->term_id.'';
    $tag_name= $tag->name;
    • この返信は4年、 9ヶ月前にishitakaが編集しました。
    トピック投稿者 Naoki-Jo

    (@naoki-jo)

    ありがとうございます。

    $tag_id_name= $tag->term_id.'';
    $tag_name= $tag->name;

    やはりこのやり方がベストですね!

    ただ、今まで問題なく動いていたので、
    バージョンアップに伴って、
    何かルールが変更されたような事があるのか疑問です。

    WordPress のバージョンの違いではなく、他に原因がありそうですが・・・よく分かりません。

    トピック投稿者 Naoki-Jo

    (@naoki-jo)

    お返事ありがとうございます。
    ひとまず、タグは数字のIDで乗り切ろうと思います。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「WPをバージョンアップした時にget_postsのtagが効かない」には新たに返信することはできません。