重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

いつもはROMでいろいろ勉強させて頂いております。
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の"値がありません"の処理へ行ってしまっているため、表示がされないのだと思います。

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

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

A 回答 (1件)

ごめんなさい、面倒なのでよく読んでません(ぉぃ



ちょっとプラグインが何をしているのかわかりませんが、カスタムフィールドに入れた値をそのままトップページに表示させたいというだけですよね。
テキストだけでしたら特にプラグインは要らないと思うのですが。

カスタムフィールドを表示させるのは、
<?php echo get_post_meta($post->ID , 'キー' ,true); ?>
で表示されるはずです。
上記の場合ですと、
<?php echo get_post_meta($post->ID , 'news_title1' ,true); ?>
になります。
the_fieldはAdvancedCustomFieldの関数なので、ACFの設定ができるプラグインなのかな???

で、なんで表示されないかというと、キーが一致していないから。
news_title1で設定したなら、記事画面のほうでも「見出し1」ではなく「news_title1」とする必要があります。
もしくは、どちらも「見出し1」で統一するか。

それと、「値がありません」って表示は別な問題で、
<?php query_posts('post_type=top_news'); ?>
<?php $text = get_field('news_title1');
このあたりは、下層のブログ記事でtop_newsの記事の一覧を取得する関数(しかも今は推奨されていない書き方)なので、前半の部分は不要です。

まとめますと
・カスタムフィールドにnews_title1,news_contents1という名前で値を入力


<?php get_header(); ?>
<div id="contents">
<div id="info02">
<h3><?php echo get_post_meta($post->ID , 'news_title1' ,true); ?></h3>
<p><?php echo get_post_meta($post->ID , 'news_contents1' ,true); ?></p>
・・・
</div>
</div>
<?php get_footer(); ?>

もし、下層にページを作って、その一覧をトップに5件表示したい、という話でしたらまた別なハナシです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!