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

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

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

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

PHP

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

Q&A

解決済

2回答

5843閲覧

WordPress トップページに画像を出力したい

lingwood

総合スコア40

WordPress

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

PHP

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

0グッド

0クリップ

投稿2018/03/05 05:09

前提・実現したいこと

WordPressをカスタマイズしています。
トップページ(index.php)にカスタムフィールドに設定した画像が表示されなく困っています。

どうにか教えて頂きたいです><

WordPressは最新で4.9.4
Theme:xeory(https://xeory.jp/)
カスタムポスト系プラグイン:
・Custom Post Type UI
・Smart Custom Field

上記構成です。

バナー管理をしたいのでカスタムポスト名をinput_bnrにしました。
カスタムフィールドの項目は、画像入力欄をbnr_imageにしました。

ソースコード

<?php get_header(); ?> <div id="hero"></div> ここに表示させるためのコードを書いています。 <div id="content"> <div class="wrap"> <?php if( !( is_home() || is_front_page() ) ){ // パンくず bzb_breadcrumb(); ・・・・

試したこと

① <?php $list = post_custom('input_bnr'); echo wp_get_attachment_image( $list , $bnr_image ,'large' ); ?> ② <?php $list = post_custom('input_bnr'); echo wp_get_attachment_image( $list , 'large' ); ?> ③ <?php $cf_sample = SCF::get('bnr_image'); echo wp_get_attachment_image( $cf_sample , 'large' ); ?> ④ <?php $cf_sample = SCF::get('bnr_image'); echo wp_get_attachment_image( $bnr_image , 'large' ); ?> ⑤ <?php if( !( is_home() || is_front_page() ) ){ $cf_sample = SCF::get('bnr_image'); } ?> <?php wp_get_attachment_image( $cf_sample , 'large' ); ?> ⑥ <?php $args = array( 'numberposts' => 5, 'post_type' => 'input_bnr' ); $customPosts = get_posts($args); if($customPosts) : foreach($customPosts as $post) : setup_postdata( $post ); ?> <?php //テスト① <img src="p_get_attachment_image( $bnr_image , 'large');"> ?> <?php //テスト② wp_get_attachment_image( $bnr_image , 'large'); ?> <?php endforeach; ?> <?php else : ?> <p>画像がありません。</p> <?php endif; wp_reset_postdata(); //クエリのリセット ?>

いろいろ試行しているのですが、
なかなか表示ができないでいます。

エラー時に表示される画像が表示されていたのですが、
デベロッパーツールで見た時にパスが以下のようになっていました。

<img width="48" height="64" src="http://ドメイン/wp-includes/images/media/default.png" class="attachment- size-" alt="">

すみませんが、教えていただけないでしょうか。
よろしくお願いします!!

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

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

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

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

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

guest

回答2

0

ベストアンサー

ただ単に出力するだけならこんな感じでいかがでしょうか。

html

1<?php $query = new WP_Query(array( 'post_type' => 'input_bnr')); ?><!-- input_bnrの投稿を取得 --> 2<?php if($query->have_posts()): ?><!-- 投稿があるかどうか --> 3<?php while($query->have_posts()) : $query->the_post(); ?><!-- 投稿があればループ開始 --> 4<?php 5 $bnr_image = SCF::get('bnr_image'); 6 echo wp_get_attachment_image( $bnr_image , 'large' ); 7?><!-- 画像を取得して出力 --> 8<?php endwhile; ?><!-- ループ終了 --> 9<?php endif; ?><!-- 投稿があるかどうかのif終わり --> 10<?php wp_reset_query(); ?><!-- メインクエリのためにリセット -->

画像の表示を画像URLにして、画像が無い場合も考えるならこう?

<?php $query = new WP_Query(array( 'post_type' => 'input_bnr')); ?> <?php if($query->have_posts()): ?> <ul> <?php while($query->have_posts()) : $query->the_post(); ?> <?php $bnr_image = SCF::get('bnr_image'); $bnr_image = wp_get_attachment_image_src($bnr_image,'large'); $imgUrl = esc_url($bnr_image[0]); ?> <?php if( $imgUrl ){ ?> <li><img src="<?php echo $imgUrl; ?>"></li> <?php } else { ?> <li><img src="http://placehold.jp/eeeeee/cccccc/150x150.png?text=NoImage" alt=""></li> <?php } ?> <?php endwhile; ?> </ul> <?php endif; ?> <?php wp_reset_query(); ?>

投稿2018/03/05 07:05

編集2018/03/05 07:48
dit.

総合スコア3235

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

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

lingwood

2018/03/05 07:30

dit. 様 お世話になります。 ありがとうございました! 無事出力されました!!! 上記コード参考にしてちゃんと理解したいと思います。 まったくウンともスンともだったのですが、 どのように考えたらよろしいのでしょうか? お時間よろしければ教えていただけたらすごくうれしいです。 本当にありがとうございました!!!
lingwood

2018/03/05 09:45

dit. 様 お世話になります。 詳しい解説をいただいて本当にありがとうございます!! ご解説を頂いてすごく勉強になりました。 自身でもいろいろと試行して今後起こり得る場面で対応できるよう、 応用幅を持ちたいと思います。 また今後ともよろしくお願い致します。
guest

0

画像が複数枚あるんですかね?

<?php foreach ( post_custom( 'input_bnr' ) as $attachment_id ) { echo '<li>'.wp_get_attachment_image( $attachment_id , 'large' ).'</li>'; } ?>

投稿2018/03/05 05:47

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

lingwood

2018/03/05 06:13

Space-Monkey 様 お世話になります。 画像は1枚です。 すみません、上記コードはいろいろググって取得したコードを張り付けて やってみた際の名残でして・・・失礼いたしました。 ただ、上記のようにforeach文で回したコードも試行してみたのですが、 それも取得できなかったものですから、 ワケがわからなくなってしまい、それでお聞きしようと思い立った次第です。 すみませんが、引き続きよろしくお願い致します。
退会済みユーザー

退会済みユーザー

2018/03/05 06:25 編集

一枚しかないなら <?php echo wp_get_attachment_image( get_post_meta( 'カスタムポストのページID', 'input_bnr', true ), 'large' ); ?> で出ませんか?
lingwood

2018/03/05 06:52

お世話になります。 ページIDを入れて試してみました。 <?php echo wp_get_attachment_image( get_post_meta( '499', 'input_bnr', true ), 'large' ); ?> 出力されませんでした。 子テーマにしていること、もしくはxeoryというテーマが良くないのでしょうか?
退会済みユーザー

退会済みユーザー

2018/03/05 07:11

何となくinput_bnrがカスタムフィールドのメタキーではないように思います。
lingwood

2018/03/05 07:31

Space-Monkey 様 お世話になります。 いろいろ思案いただいて本当にありがとうございます!! 上記、dit.さんが教えてくれたコードで表示できましたが、 一緒に考えて下さって、本当にうれしかったです! ありがとうございました。 またの際にもどうぞよろしくお願い致します。
退会済みユーザー

退会済みユーザー

2018/03/05 07:56

勘違いしてました。 <?php echo wp_get_attachment_image( get_post_meta( 'カスタムポストのページID', 'bnr_image', true ), 'large' ); ?>
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問