質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.09%

カスタム投稿内に人気記事の表示をしたいが同じものが並んでしまう

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 194

score 2

wordpress人気記事の表示をしたいが同じものが並んでしまう

プラグインなしで人気記事を3つ表示しようと思っています。
カスタム投稿ページ内にコードを書いているためか、開いているページのものが
3つ(同じもの)並んでしまっています。
調べると皆さんsidebarに記事を表示されているのでそうしないといけないのかな?と
思ってはいるのですが、sidebarの下にお問い合わせや新着記事をページの横幅いっぱい表示させる
デザインの関係上sidebarを使うことを躊躇しています。。

もし解決方法をご存じの方がいればお教えいただけると助かります。

functions.php

//カスタム投稿の人気記事
function getPostViews($postID){
  $count_key = 'post_views_count';
  $count = get_post_meta($postID, $count_key, true);  
  //すでにメタデータがあるかどうかで処理を分ける
  if($count==''){
    delete_post_meta($postID, $count_key);
    add_post_meta($postID, $count_key, '0');
    return "0 View";
}
return $count.' Views';  
}
//カスタム投稿の「post_views_count」アクセス数を保持する
function setPostViews($postID) {
  $count_key = 'post_views_count';
  $count = get_post_meta($postID, $count_key, true);
  if($count==''){
    $count = 0;
    delete_post_meta($postID, $count_key);
    add_post_meta($postID, $count_key, '0');
}else{
    $count++;
    update_post_meta($postID, $count_key, $count);
}
}
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);

single-infopage.php

<!-- 人気記事一覧 -->
<?php if(is_mobile()): //SP
   $popular = new WP_Query(
      array(
      'meta_key' => 'post_views_count',
      'orderby' => 'meta_value_num',
      'order' => 'DESC',
      'post_type' => 'infopage',
      'posts_per_page' => 6,
      'caller_get_posts' => 1,
      'offset' => 0,
      )
    ); 
   else: //PC tablet
   $popular = new WP_Query(
      array(
      'meta_key' => 'post_views_count',
      'orderby' => 'meta_value_num',
      'order' => 'DESC',
      'post_type' => 'infopage',
      'posts_per_page' => 3,
      'caller_get_posts' => 1,
      'offset' => 0,
      )
    ); ?>

    <?php if($popular->have_posts());
    while ($popular->have_posts()) : $popular->the_post();
    ?>
      <div class="Popular3">
<div class="Img">
<?php
    global $wp_query;
    $postID = $wp_query->post->ID;
    echo wp_get_attachment_image($image, 'medium');?>
    </div>
    <div class="center">
<div class="Red">
<?php
    global $wp_query;
    $postID = $wp_query->post->ID;
    echo get_post_meta($postID, '例題', true);
?>
</div><div class="White">
<?php
    global $wp_query;
    $postID = $wp_query->post->ID;
    echo get_post_meta($postID, 'その他', true);
?>
</div>
  </div>
<div class="fee">
<?php
    global $wp_query;
    $postID = $wp_query->post->ID;
    echo get_post_meta($postID, '例', true);
?>
</div>
<a href="<?php the_permalink(); ?>">
<div class="Btn">詳細を見る</div>
</a>
</div>
        <?php endwhile; wp_reset_postdata();?>
        <?php endif; ?>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

たしかに$wp_queryはWP_Queryオブジェクトですが、
$popular = new WP_Query();
と宣言されていますから、
$postID = $popular->post->ID;
でループ内の記事IDを取得するのではないでしょうか?

おそらく$wp_queryは特に変更されず表示中の記事の情報を持っているため
$postID = $wp_query->post->ID;は表示中の記事IDを取得して、
それをecho get_post_meta($postID, '例題', true);
で渡しているので、表示中の記事の情報が出力されるのではないでしょうか。

ループの中ですから$postID = get_the_ID();でもOKだと思います。
いずれにせよglobal $wp_query;は不要です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/11/13 16:30

    すごい!解決しました。
    phpのことを良く分かっていないので助かりました。。
    ありがとうございます!!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.09%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る