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

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

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

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

PHP

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

HTML

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

Q&A

解決済

3回答

756閲覧

WordPressのカスタムヘッダーで画像にリンクをつける方法

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

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

PHP

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

HTML

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

0グッド

0クリップ

投稿2018/05/14 04:02

編集2018/05/14 06:42

wordpressでオリジナルのテンプレートを作成しています。
https://dainashiyesterday.com/post-4610/
こちらのサイトを参考にカスタムヘッダーを作成しています。

スライダーのヘッダー画像にリンクをつけたいと思っています。

参考サイト通りに進め、ましたが、aタグ(リンクが表示されません。)
aタグ(リンクが表示されるにはどうしたら良いでしょうか?)

コード

function.phpに下記コード記入

php

1/* カスタムヘッダー 2---------------------------------------------------------- */ 3$custom_header_defaults = array( 4'width' => 1500, //ヘッダー画像の幅 5'height' => 825, //ヘッダー画像の高さ 6); 7add_theme_support( 'custom-header', $custom_header_defaults ); 8//ヘッダー画像のIDを取得 9function custom_header_get_attachment_id_by_url( $url ) { 10$parse_url = explode( parse_url( WP_CONTENT_URL, PHP_URL_PATH ), $url ); 11$this_host = str_ireplace( 'www.', '', parse_url( home_url(), PHP_URL_HOST ) ); 12$file_host = str_ireplace( 'www.', '', parse_url( $url, PHP_URL_HOST ) ); 13if ( ! isset( $parse_url[1] ) || empty( $parse_url[1] ) || ( $this_host != $file_host ) ) { 14return; 15} 16global $wpdb; 17$attachment = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM {$wpdb->prefix}posts WHERE guid RLIKE %s;", $parse_url[1] ) ); 18return $attachment[0]; 19}

index.phpに下記コードを記入

<ul class="slides"> <?php $header_images = get_uploaded_header_images(); ?> <?php foreach ($header_images as $key => $value): ?> <?php $img_id = custom_header_get_attachment_id_by_url($value['url']); ?> <?php $img_meta = get_post($img_id); ?> <li> <?php if($img_meta->post_content): ?> <a href="<?php echo esc_html($img_meta->post_content); ?>"> <?php endif; ?> <img src="<?php echo $value['url']; ?>" alt="<?php echo esc_html($img_meta->post_title); ?>" width="<?php echo HEADER_IMAGE_WIDTH; ?>" height="<?php echo HEADER_IMAGE_HEIGHT; ?>" /> <?php if($img_meta->post_content): ?> </a> <?php endif; ?> </li> <?php endforeach; ?> </ul>

実際に表示されているhtmlは下記です。

html

1<ul class="slides"> 2<li> 3<img src="画像url" alt="" width="1500" height="825" /> 4</li> 5<li> 6<img src="画像url" alt="" width="1500" height="825" /> 7</li> 8</ul> 9

何卒よろしくお願いします。

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

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

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

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

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

kei344

2018/05/14 04:27

「説明にリンクを入れても」とありますがどれが「説明」でしょうか。
退会済みユーザー

退会済みユーザー

2018/05/14 04:41

説明不足で失礼いたしました。wordpress管理画面→メディアファイルの詳細→説明です。
退会済みユーザー

退会済みユーザー

2018/05/14 04:43

写真を追加させていただきました。
kei344

2018/05/14 16:59

回答へのコメントで「cropped」と付いたファイル名になっていますが、メディアライブラリにクロップ前の画像があったりしませんか?
退会済みユーザー

退会済みユーザー

2018/05/14 22:40 編集

カスタムヘッダーを選択する際に切り抜きしていたんですが「切り抜きしない」を選択するとリンクが表示されました!
guest

回答3

0

ベストアンサー

custom_header_get_attachment_id_by_urlって関数の情報を見つけられなかったのだけど
Advanced Custom Fieldの関数か何かなのかしら?

普通に定義してましたねすいません
まあでも、やっぱり

php

1$img_id = custom_header_get_attachment_id_by_url($value['url']);

これって多分

php

1$img_id = $value['attachment_id'];

でいけるんじゃないかな

どっちにしろエラーが起きてるのにスルーされている可能性もあるので
wp-config.phpでデバッグモードの指定のところが
define('WP_DEBUG', false);のままなら
define('WP_DEBUG', true);にしときましょう

投稿2018/05/14 04:58

編集2018/05/14 05:33
KazuhiroHatano

総合スコア7804

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

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

KazuhiroHatano

2018/05/14 05:30

普通に質問文にも書いてますね、すいません 修正します
退会済みユーザー

退会済みユーザー

2018/05/14 05:41

回答ありがとうございます。define('WP_DEBUG', true);にしました。エラーはおきていませんでした。
退会済みユーザー

退会済みユーザー

2018/05/14 05:42

$img_id = custom_header_get_attachment_id_by_url($value['url']); を $img_id = $value['attachment_id']; に変更して見ましたが変化はありませんでした..
KazuhiroHatano

2018/05/14 05:48

とりあえず、$img_metaをvar_dumpしてみて、post_contentが本当に入ってるのか確認しますか
退会済みユーザー

退会済みユーザー

2018/05/14 12:28 編集

以下が出てきました。 object(WP_Post)#3565 (24) { ["ID"]=> int(65) ["post_author"]=> string(1) "1" ["post_date"]=> string(19) "2018-05-14 15:52:54" ["post_date_gmt"]=> string(19) "2018-05-14 06:52:54" ["post_content"]=> string(0) "" ["post_title"]=> string(18) "cropped-j-01-5.jpg" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "inherit" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(6) "closed" ["post_password"]=> string(0) "" ["post_name"]=> string(18) "cropped-j-01-5-jpg" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2018-05-14 15:52:54" ["post_modified_gmt"]=> string(19) "2018-05-14 06:52:54" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(66) "http://qq/wp-content/uploads/2018/05/cropped-j-01-5.jpg" ["menu_order"]=> int(0) ["post_type"]=> string(10) "attachment" ["post_mime_type"]=> string(10) "image/jpeg" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
KazuhiroHatano

2018/05/14 11:09

post_content入ってないですねぇ サイズ違いの画像の方とかに入れちゃってんですかね
KazuhiroHatano

2018/05/14 11:41

とりあえずそのcustom_header_get_attachment_id_by_urlって関数ダメですね 試してみたけどやっぱりguidは画像編集によるファイル名の変化を追跡しないですね guidってあてにならないんですよ、信用しちゃダメです 正しい画像のURLはpost_metaの_wp_attached_fileの方ですね post_contentが入ってないのは違う原因でしょうけど
退会済みユーザー

退会済みユーザー

2018/05/14 14:27

そうなんですね。もう完全にお手上げ状態です..
KazuhiroHatano

2018/05/15 01:32

とりあえず本当に目的の画像に説明つけれてるのか確認 IDは65の様ですね、管理画面のメディアから画像の編集画面開いた時 URLの最後は?item=65になってるでしょうか?
dit.

2018/05/15 02:27

メディアライブラリで、グリッド表示(田の字のアイコン)ではなくリスト表示(左側のアイコン)にするとカスタムヘッダー用にクリップされた画像があるかと思いますがいかがでしょうか? 元の切抜きされていない画像ではなく、そちら(現在のヘッダー画像 とか表示があると思います)の編集→説明にURLを入力すれば提示のコードで行けそうなのですが。
退会済みユーザー

退会済みユーザー

2018/05/15 02:45

切り抜きが原因でした。ご協力ありがとうございます!!
dit.

2018/05/15 02:50

KazuhiroHatanoさんの「URLの最後は?item=65になってるでしょうか?」の言葉で気が付きました。気になっておりテストしていたので私もすっきりしました。ありがとうございます。
guest

0

原因は画像を切り抜きしたことにありました。
切り抜き前の画像にurlを入れていたので表示されなかったようです。
切り抜いた画像にurlを入れることで表示されました。

ご協力い頂いた皆さまありがとうございます。
ベストアンサーは大変迷ったので、最初に回答してくださった方
にしました。ありがとうございます。

投稿2018/05/15 02:50

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

これはどのような処理だと思われているのでしょうか。「説明」に値が入っていたらその値をリンク先に指定しているようですが、これでは表示されません。

PHP

1<a href="<?php echo esc_html($img_meta->post_content); ?>">

表示するように書かないと表示されません。それとも「表示」は「リンク先に飛ばない」と言う意味でしょうか。

投稿2018/05/14 04:55

kei344

総合スコア69407

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

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

退会済みユーザー

退会済みユーザー

2018/05/14 05:32

phpはほとんど分からないので、<a href="<?php echo esc_html($img_meta->post_content); ?>">これで、画像のリンクが表示されると思っていました。
kei344

2018/05/14 05:36

「画像のリンク」とは?PHPはブラウザにHTMLを返し、それをブラウザが解釈して「表示」します。「表示」可能なHTMLが出力されているのかをまず確認してください。
退会済みユーザー

退会済みユーザー

2018/05/14 09:41

画像のリンクとは「説明」に記入したurlのことをさしていました。あまり知識がなく分かりにくくなってしまい申し訳ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問