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

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

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1201閲覧

【wordpress】新着記事が正しく表示されない(テーマ:coccon)

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/01/03 07:40

前提

wordpressでブログを作っており、トップページには以下の順番でコンテンツを表示させたい

  • 人気記事
  • 新着記事

使用テーマ:coccon(https://wp-cocoon.com/

子テーマでカスタマイズ

問題点

人気記事を表示させると、新着記事のほうにも人気記事が表示されてしまう

おそらく、本来1ページ目に表示されるはずの新着記事が人気記事に変わってしまっている
記事の2ページ目以降は正しく新着記事が表示されている

人気記事を表示させるタグを削除して、新着記事のみ表示させると、1ページ目の新着記事も正しく表示される

試したこと

2つの方法で人気記事を表示させた

1つ目

function.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'; } 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);

実際に表示させるタグ

<ul class="hero-thunb__lists" id="heroFadelLists"> <?php // views post metaで記事のPV情報を取得する setPostViews(get_the_ID()); // ループ開始 query_posts('meta_key=post_views_count&orderby=meta_value_num&posts_per_page=5&order=DESC'); while(have_posts()) : the_post(); ?> <li class="hero-thunb__item"> <a class="hero-thunb__anchor" href="<?php the_permalink(); ?>" style="background-image: url(<?php echo wp_get_attachment_url( get_post_thumbnail_id() ); ?>)"> <span class="hero-thunb__desc"> <span class="hero-thunb__desc-data"><?php the_time('Y.n.j'); ?></span> <span class="hero-thunb__desc-title"><?php the_title(); ?></span> </span> </a> </li> <?php endwhile; ?> </ul>

2つ目

以下のサイトを参考に人気記事を表示
http://munouya.com/website/my-popular-posts.html

最後に

新着記事はcocconのデフォルトのままで、特に何もいじっていません。

原因がわからず手詰まりです。ご教授のほどお願い致します。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

query_postsを使うとグローバル変数の記事リスト(メインクエリ)を上書きします。
以下の関数をコールすると上書きした記事リストを元に戻すことができますので、
人気記事表示処理ループの後にコールするとよいと思います。

PHP

1<?php wp_reset_query(); ?>

get_posts関数やWP_Queryクラスを利用すれば、グローバル変数の記事リスト(メインクエリ)を
上書きしないので、こちらががおススメです。

投稿2019/01/04 06:45

tabuu

総合スコア2449

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/01/05 16:34

wp_reset_queryを使ったら無事表示されました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問