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

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

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

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

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

2208閲覧

WORDPRESS カスタム投稿 カスタムフィールドの値を取得

takeaduma

総合スコア44

WordPress

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

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2015/04/13 16:56

WORDPRESS初心者であります。
このたび、HTMLからWORDPRESSの移行を行うことになりました。
そこで、カスタム投稿にひっかかってしまい、3日ほど検索をしましたが、検索の仕方が下手なのか解決方法が見つからず、こちらでお知恵をお借りしたく相談させて頂きます。

元々HTMLファイルだった「index.html」を「index.php」に変更し、
PHPでget_headerやget_footerなどを行い、外観のウェブサイトは移行前と同様のものになりました。
このTOPページに「最新ニュース」が5件表示されるようになっており、「◆ニュースのタイトル」「本文」が表示されます。

上記2つをカスタム投稿を用いて、index.phpに表示をさせたいです。
そこで、Custom Post Type UIとAdvanced Custom Fieldsのプラグインを用いて
「TOP画面ニュース」(type_slug='top_news')の投稿タイプを作成し、フィールドグループとして、「見出し1」「本文1」
「見出し2」「本文2」「見出し3」「本文3」「見出し4」「本文4」「見出し5」「本文5」とフィールドを作りました。フィールド名は「見出し」が「news_title」にそれぞれの数字、「本文」が「news_contents」にそれぞれの数字を設定しました。

続いて、index.phpに記載をするコードがまったくわかっておらず、
いろんなところのサイトのコードを真似てはうまくいかず、の繰り返しで、
最終的なコードは以下になりますが、それでもやはりうまくいきません。

<?php get_header(); ?> <div id="contents"> <div id="info02"> <?php query_posts('post_type=top_news'); ?> <?php $text = get_field('news_title1'); if ( $text ) { echo $text; } else { echo "値がありません"; } ?> <h3><?php the_field("news_title1", $post->ID); ?></h3> <p><?php the_field("news_contents1", $post->ID); ?></p> <h3><?php the_field("news_title2", $post->ID); ?></h3> <p><?php the_field("news_contents2", $post->ID); ?></p> <h3><?php the_field("news_title3", $post->ID); ?></h3> <p><?php the_field("news_contents3", $post->ID); ?></p> <h3><?php the_field("news_title4", $post->ID); ?></h3> <p><?php the_field("news_contents4", $post->ID); ?></p> <h3><?php the_field("news_title5", $post->ID); ?></h3> <p><?php the_field("news_contents5", $post->ID); ?></p> <?php get_footer(); ?>

デバッグ用として条件分岐でフィールドで値が取得されているのか確認をしたところ、elseの"値がありません"の処理へ行ってしまっているため、表示がされないのだと思います。

こちらのコードをいろんなところで調べたり、参考サイトをみたりしていましたが、知識不足なところもありお手上げ状態でした。

こちらの表示をするためにはどのようにすれば解決をするのでしょうか。
アドバイスや解決策など、是非お知恵を頂きたく思います。
ご助力のほどよろしくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

ループの記述ができていないのが原因だと思います。

質問者さんの記述を元に下記に記載しておきます。

lang

1<?php query_posts('post_type=top_news'); ?> 2//ループの記述 3<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 4 5<div class="post"> 6 <h3><?php the_field('news_title1'); ?></h3> 7 <p><?php the_field('news_contents1'); ?></p> 8 9 <h3><?php the_field('news_title2'); ?></h3> 10 <p><?php the_field('news_contents2'); ?></p> 11 12 <h3><?php the_field('news_title3'); ?></h3> 13 <p><?php the_field('news_contents3'); ?></p> 14 15 <h3><?php the_field('news_title4'); ?></h3> 16 <p><?php the_field('news_contents4'); ?></p> 17 18 <h3><?php the_field('news_title5'); ?></h3> 19 <p><?php the_field('news_contents5'); ?></p> 20</div> 21 22<?php endwhile; endif; ?> 23//ループの記述 24<?php wp_reset_query(); ?>

こちらで一度試してみてください。
表示できると思います。

投稿を表示する際は下記を1つの定型文と覚えておくといいかとおもいます。
「投稿内容を記述」と記載してある部分が投稿の個数分繰り返し処理されます。

lang

1<?php query_posts('post_type=ポストタイプ'); ?> 2<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 3 4投稿内容を記述 5 6<?php endwhile; endif; ?> 7<?php wp_reset_query(); ?>

投稿2015/04/21 04:45

RyotaAkizuki

総合スコア7

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

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

AknEp

2015/04/21 09:33

昔のイディオムだとifで囲みますけど、最近はwhileだけになってますよ
takeaduma

2015/05/07 06:54

回答ありがとうございます。 ifをwhileにという修正の回答もいただいたのでお二人ともベストアンサーにさせていただきたいのですが、最初に解決の回答をくださったためベストアンサーとさせていただきます。 非常に助かりました、今後ともよろしくお願い致します。
guest

0

query_postsの後でthe_post() を実行していないので投稿の内容が取得できていないのが原因です。

以下の様にすれば良いと思います

lang

1// get_headerとかする 2// query_postsする 3<?php while ( have_posts() ) : the_post(); ?> 4/* the_fieldやget_fieldなどはここでやる */ 5<?php endwhile; ?> 6// get_footerとかする

参考: WordPress Codex - 関数リファレンス/the_post

投稿2015/04/16 13:23

AknEp

総合スコア200

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

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

takeaduma

2015/05/07 06:55

修正のコメントをいただきありがとうございました。 詳しいコメントアウトもくださり、今後同じようなことが来ても自分で解決できる自信がもてました。 今後ともよろしくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問