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

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

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

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

PHP

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

Q&A

解決済

1回答

1461閲覧

WordPress 固定ページの新着記事一覧の表示がうまく取得できません。

lingwood

総合スコア40

WordPress

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

PHP

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

0グッド

0クリップ

投稿2017/04/03 01:01

###前提・実現したいこと
すみません、よろしくお願い致します。

件名の通りつまづいております。

缶コーヒーを例に、ご説明させていただければと思います。
おおまかな構成は以下の通りページが必要となります。
・トップ
・固定ページ(コーヒーの紹介ページ)+商品一覧表示(新着的なもの)
・固定ページ(カフェオレの紹介ページ)+商品一覧表示(新着的なもの)
・商品一覧ページ(コーヒーとカフェオレの商品が全部混在)
・詳細ページ

カスタム投稿タイプから缶コーヒーを登録し、
固定ページの商品一覧表示部分に5件新着分を表示させたいという内容となります。

###発生している問題
首記の通り問題となっている部分は固定ページの一覧表示部分となります。
エラーはないのですが、

一覧部分に5件表示させたくコーヒー缶とカフェオレ缶を
ランダムに必要件数以上登録して試したところ、
コーヒー缶は3件、カフェオレ缶は2件しか表示されなかったりと
思ったような動きになりません。

以下のようになります。

1.コーヒー
2.コーヒー
3.カフェオレ
4.コーヒー
5.カフェオレ
6.コーヒー
7.コーヒー
8.カフェオレ
9.カフェオレ
10.コーヒー
11.カフェオレ
12.カフェオレ
13.コーヒー

結果
・固定ページ(コーヒーの紹介ページ)+商品一覧表示(新着的なもの)
コーヒー
コーヒー
コーヒー

・固定ページ(カフェオレの紹介ページ)+商品一覧表示(新着的なもの)
カフェオレ
カフェオレ

そこでurlにpage/2を付与してみたところ
次のページに表示されておりました。

phpは、
'posts_per_page' => 5,としてif文で条件分岐させていることが原因かと思うのですが・・・
そのため「最新登録順に5件を振り分けて表示し、その他は、page/2に表示」
という現象になっているのかと推察しています。

ファイル構成は、
type.php(コーヒー缶とカフェオレ缶を混在して表示させる一覧ページ)
coffee.php (コーヒーを表示させるテンプレート)
cafe_au_lait.php (カフェオレを表示させるテンプレート)
としています。

以下にソースコードを添付致します。
どこに問題があるのか全く分からず、途方に暮れております。

どうか、ご助言いただけますよう何卒よろしくお願い申し上げます。

###該当のソースコード

coffee.php

<?php $args = array( 'post_type' => 'type', 'posts_per_page' => 5, 'paged' => $paged, ); ?> <?php query_posts( $args ); ?> <?php while (have_posts()) : the_post(); $name = post_custom('name'); $segment = post_custom('area_seg'); $choice = post_custom('choice'); ?> <!-- 条件分岐/コーヒー --> <?php $flag = get_post_meta($post->ID,"choice",true); ?> <?php if ($flag == 'コーヒー') : ?> <!-- 表示 --> <?php echo $area_seg; ?> <?php echo $choice; ?> <?php echo $name; ?> <?php endif; ?> <?php endwhile; ?> <?php wp_reset_query(); ?>

cafe_au_lait.php.php

<?php $args = array( 'post_type' => 'type', 'posts_per_page' => 5, 'paged' => $paged, ); ?> <?php query_posts( $args ); ?> <?php while (have_posts()) : the_post(); $name = post_custom('name'); $segment = post_custom('area_seg'); $choice = post_custom('choice'); ?> <!-- 条件分岐/カフェオレ --> <?php $flag = get_post_meta($post->ID,"choice",true); ?> <?php if ($flag == 'カフェオレ') : ?> <!-- 表示 --> <?php echo $area_seg; ?> <?php echo $choice; ?> <?php echo $name; ?> <?php endif; ?> <?php endwhile; ?> <?php wp_reset_query(); ?>

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

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

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

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

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

guest

回答1

0

自己解決

解決することができました。
お騒がせいたしました。

原因は、非推奨のテンプレートタグquery_posts() を使用していたため、
get_posts テンプレートタグを使用すること教えていただきまして、
以下の通りに変更することで解決となりました。

<?php $args = array( 'post_type' => 'type', 'posts_per_page' => 5, 'paged' => $page, 'orderby' => 'date', 'meta_query' => array( array( 'key' => 'choice', 'value' => 'コーヒー', ) ), ); $postslist = get_posts( $args ); ?> <?php query_posts( $args ); ?>

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

投稿2017/04/03 02:45

lingwood

総合スコア40

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問