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

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

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

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

PHP

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

Q&A

解決済

2回答

2780閲覧

Wordpress カスタム投稿での動的な画像リンクの取得

web

総合スコア24

WordPress

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

PHP

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

0グッド

0クリップ

投稿2016/01/07 01:31

編集2016/01/07 01:32

WordPressのsingle-aaa.phpファイルに以下を書き込んでいます。

やりたいことしては、カスタム投稿(aaa)の画像を取得して
15枚表示させ、その画像それぞれに画像URLリンクを貼りたいです。

画像のフィールド名はimg_02~img_15で設定してあります。

php

1<?php 2 // アイキャッチ画像のIDを取得 3 $thumbnail_id = get_post_thumbnail_id(); 4 $img_full = wp_get_attachment_image_src( $thumbnail_id , 'full' ); 5 echo '<img class="img-responsive" src="'.$img_full[0].'">'; 6?> 7 </a> 8 9<?php 10 $e = 1; 11 for ($i = 2 ; $i < 16 ; $i++) { 12 $ctm = get_post_meta($post->ID, 'img_0'.$i, true); 13 if($ctm): 14 echo '<a data-slide-index="'.$e.'" href="">' ; 15 echo '<img class="img-responsive" src=" ' ; 16 echo wp_get_attachment_url(get_post_meta($post->ID, 'img_0'.$i,true)); 17 echo ' "></a>' ; 18 $e++ ; 19 endif; 20 } 21?>

これだと画像はきちんと取得して表示されるのですが、リンクが動作しません。
echo '<a data-slide-index="'.$e.'" href="">' ;
の部分を
echo '<a data-slide-index="'.$e.'" href=" ' ; echo wp_get_attachment_url(get_post_meta($post->ID, 'img_0'.$i,true)); echo ' ">
としてみましたが、何も変わりませんでした。
どのように修正すべきか教えて頂けないでしょうか?

宜しくお願い致します。

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

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

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

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

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

guest

回答2

0

こんにちわ。

phpの出力に関しては解決されているようですが、ちょっとだけ、画像のフィールド名が気になります。
このfor文だと$iが10より大きい数字なった時に
'img_010' となってしまうと思います

get_post_meta関数を使用する箇所の記述を

php

1get_post_meta($post->ID, 'img_'.str_pad($i,2,'0',STR_PAD_LEFT),true)

としておいたほうが良さそうです。

あとリンク機能の動きの件ですが、とりあえず

php

1<?php 2 // アイキャッチ画像のIDを取得 3 $thumbnail_id = get_post_thumbnail_id(); 4 $img_full = wp_get_attachment_image_src( $thumbnail_id , 'full' ); 5 echo '<img class="img-responsive" src="'.$img_full[0].'">'; 6?> 7 </a>

上記の閉じ</a>タグは、対となる開始タグ<a>は存在していますか?
あとはCSSやJsの問題と思われます。imgのclass属性にimg-responsiveとあるので、画面幅によって何かしらの実装が施してありそうですが...

投稿2016/01/07 04:00

akira888

総合スコア85

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

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

web

2016/01/07 04:42 編集

akira888様、回答ありがとうございます。 確かにそうです!なので、フィールドは010と指定してましたが、そのように記述すると解決できるのですね! とても勉強になりました。ありがとうございます。 <a>開始タグはちゃんとあります。 私のコードの載せ漏れでした・・すみません。 bootstrapを使用しているので、それが何か原因なのでしょうか・・。
guest

0

ベストアンサー

forの部分を下記のようにしても動きませんか?
for ($i = 2 ; $i < 16 ; $i++) {
$ctm = get_post_meta($post->ID, 'img_0'.$i, true);
if($ctm):
echo '<a data-slide-index="'.$e.'" href="'; echo wp_get_attachment_url(get_post_meta($post->ID, 'img_0'.$i,true)); echo '"><img class="img-responsive" src="'; echo wp_get_attachment_url(get_post_meta($post->ID, 'img_0'.$i,true)); echo '"></a>' ;
$e++ ;
endif;
}

投稿2016/01/07 01:51

narakener

総合スコア67

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

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

web

2016/01/07 02:12

narakener様 昨日に引き続き、ありがとうございます! それで動きました!が、画面幅を縮めた場合のみ動作します。。 画面が広いと動作しません。。これは一体なぜでしょうか。。 画像をdisplay:inline-blockで並べて、それをクリックでリンク動作したいだけなんですが・・・。
narakener

2016/01/07 05:48

昨日も私が回答していたんですね。今気づきました。。 動作しないという状況を確認したいのですが、今aタグの範囲はどうなっていますか? 確認方法として、Google Chromeの場合なら、F12キーでデベロッパーツールを立ち上げ、Elementsタブで問題が出ているaタグのソースにマウスオーバーすれば、範囲が画面上でハイライトすると思います。 もしimgタグより小さくなっているのでしたら、aタグにdisplay:block;を適用すれば直るかもしれません。
web

2016/01/07 07:41

narakener様 そうです。毎回助けて頂いてありがとうございます。 Firefoxで確認してみたら、<a>で指定されているのはちゃんと画像の範囲でした。 bootstrapの何かが原因なのでしょうか。。
narakener

2016/01/07 08:24 編集

そうですか。。実際の表示されているページを見てみたいところですが難しいとのことですので… 回答ではありませんが参考までに、下記サイトにbootstrapのテンプレートがありました。 .img-responsiveも使っていますので、実現されたい内容に近いのではないかと思っています。 http://ironsummitmedia.github.io/startbootstrap-creative/ このサイトのhtml、cssの構成を参考にすれば解決の糸口がつかめるかもしれません。 また、あまりteratailのルールには慣れていませんが、 当初の質問と内容が変わってきていますので、質問を新しくしなおして頂いたほうが良いかもしれません。 そのほうが有志の方の手助けもあるかと思います。 うまく解決しない場合はご検討ください。
web

2016/01/07 10:46

いろいろとありがとうございます。 そちら参考にして少し自分で調べてみます。 それでも分からなかったら、再度質問致します。 どうもありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問