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

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

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

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

PHP

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

Q&A

解決済

1回答

3012閲覧

【WordPress】wp_get_attachment_image()をechoしたときに自動挿入されるwidth,height,classを削除したい

tnk_fuku

総合スコア42

WordPress

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

PHP

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

0グッド

0クリップ

投稿2020/05/07 21:01

カスタムフィールドより画像をアップロードし、固定ページに

echo wp_get_attachment_image();

で画像を出力しています。

自動挿入されるwidth,height,classを削除したいと思っていますが、方法がいまいちわかりません。

パラメータに何らかの操作を加えるのでしょうか。

削除する方法を教えて頂けると幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

本件、wp_get_attachment_image_src()を使って、srcに挿入する画像のURLを取得し、
HTML側でそのURLを好きなようにコーディングしたほうが楽かもしれません。

PHP

1<?PHP 2 $attachment_id = 画像のidを指定してください; 3 echo wp_get_attachment_image_src( $attachment_id )[0]; // 画面にURLが描画 4 echo '<img src="' . wp_get_attachment_image_src( $attachment_id )[0] . '">': // 画面に画像が描画 5?>

関数リファレンス/wp get attachment image src


以下、私が普段使いまわしているWordPressのfunctions.phpからコピペしてきました。
(width、heightなどは当然出力されないようにしています。)

参考になるかもしれないので貼り付けておきます。

↓投稿時にwidthなどが挿入されないようにする仕組み、のはず

PHP

1function remove_image_attribute($html) { 2 $html = preg_replace('/(width|height)="\d*"\s/', '', $html); 3 // $html = preg_replace('/class=[\'"]([^\'"]+)[\'"]/i', '', $html); 4 $html = preg_replace('/title=[\'"]([^\'"]+)[\'"]/i', '', $html); 5 // $html = preg_replace('/<a href=".+">/', '', $html); 6 // $html = preg_replace('/</a>/', '', $html); 7 8 $html = str_replace('" />', '">', $html); 9 return $html; 10} 11add_filter('image_send_to_editor', 'remove_image_attribute', 10); 12add_filter('post_thumbnail_html', 'remove_image_attribute', 10);

↓追加。記事の画像を取得するための関数を、おそらく独自実装したもの

PHP

1function catch_that_image() { 2 global $post; 3 4 $tmp_content = preg_replace('/>\s*<img/', ">\n<img", $post->post_content); 5 6 if (preg_match_all('/<img.+src=[\'"]([^\'"]+[.jpg]+)[\'"].*>/', $tmp_content, $matches)) { 7 $first_img = $matches[1][0]; 8 } 9 else { 10 $first_img = false; 11 } 12 return $first_img; 13}

投稿2020/05/07 21:05

編集2020/05/07 21:47
new1ro

総合スコア4528

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

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

tnk_fuku

2020/05/07 21:21

早々のご回答ありがとうございます。 コードを追加してみましたが、削除できずそのままの表示となってしまいました。 画像挿入のカスタムフィールドは下記ページを参考に実装しました。 https://qiita.com/awesam86/items/3ae93221077b8dd190dd どうしたものでしょうか・・・。
new1ro

2020/05/07 21:36

(回答に添付したものは、だいぶ前に記述して、以後使いまわしているので記憶が曖昧なので恐縮なのですが..) 投稿時にwidthなどが挿入されないようにするのが、上記でいう remove_image_attribute()です。 試しに投稿してみて、新たに投稿した記事の中でwidthなどが消えているかを確認してみてほしいです。 新たに投稿するぶんについてはできているかもしれません。 ---------- アイキャッチ画像を取得する際に手を加えているのが↓だったはずです。 catch_that_image() 正規表現でwidthなどを取り除いているので、参考になるかもしれません。
new1ro

2020/05/07 21:50

「wp_get_attachment_image_src()」についての回答を先頭に追記しました。 好きなようにHTML側をカスタマイズできるので、<img>タグを取得するより画像のURLを取得する方に切り替えたほうが楽ではないかと思います。 (投稿など自動で記事が増えるシチュエーションでなければ、私は普段そうしています。)
tnk_fuku

2020/05/07 23:02

wp_get_attachment_image_src()で取得し、width,height,classなどの削除は出来ました。 ただ、画像が実寸(300×300)ではなく、150×150のサイズ(おそらくデフォルトのサムネイルのサイズ)でアップされ、画像ファイル名も「○○○-150x150.png」となってしまいましたf(^^;)
tnk_fuku

2020/05/08 20:17

無事に表示することが出来ました! wp_get_attachment_image_src()だと楽ですね。 初期値がサムネイルを取得するのですね。 alt属性なども設定したいので、別にカスタムフィールドを作ってそこから取得する形をとりたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問