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

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

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

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

Q&A

解決済

2回答

1953閲覧

WordPressのimegesの取得がしたい レンタルサーバー(ロリポップ)

ami15821

総合スコア56

WordPress

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

0グッド

0クリップ

投稿2016/05/24 01:26

編集2016/05/24 05:42

###前提・実現したいこと
固定ページでWordpressのimagesパスを取得してイメージファイルを表示したい

php初心者なのでどこをどうしていいのかわからず、質問させていただきました。

###発生している問題・エラーメッセージ
出力されたHTMLにあるimgタグが以下になります。

<div class="about_con"> <div class="about_mainbg"><img src="images/about_main_tit.png" alt="about"></div> </div>

該当のイメージタグの部分が読み込まれなくて表示がされていません。

ご教授いただけると助かります。

###該当のソースコード
以下は固定ページのimagesを表示させたい箇所の抜粋になります。

<div class="about_con"> <div class="about_mainbg"><img src="images/about_main_tit.png" alt="about"></div> </div>

###試したこと
function.phpにパス省略して表示されるように設定してあります。
以下がfunction.phpの内容です。

<?php // 固定ページ画像パス省略 function replaceImagePath($arg) { $content = str_replace('"images/', '"' . get_bloginfo('template_directory') . '/images/', $arg); return $content; } add_action('the_content', 'replaceImagePath'); // brの削除 remove_filter ( 'the_content', 'wpautop' ); remove_filter ( 'the_excerpt', 'wpautop' ); ?>

###補足情報(言語/FW/ツール等のバージョンなど)
wordpress4.5.2

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

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

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

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

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

kei344

2016/05/24 01:57

「どうしたいのか」はわかるのですが、「どうなったか」という情報が書かれていないように見えます。出力されたHTMLにあるimgタグを追記されたほうが良いと思います。
ami15821

2016/05/24 02:14

情報の修正依頼、ありがとうございます。 出力されたHTMLにあるimgタグを追記というのはwordpressの管理画面で編集したコードを実際の表示で確認したとき、chromeの検証で確認できるhtmlソースコードにかかれた内容のことをさしているのでしょうか? 初心者なもので、修正部分が把握できていなくてすいません。。。
kei344

2016/05/24 02:22

そうです。表示できていない、リンクが切れているなど状況と併せて当該部分のソースコードを質問文に追記してください。
ami15821

2016/05/24 02:39

早いレスポンス、ありがとうございます。 わかりました。質問文の修正をします。
guest

回答2

0

お返事遅くなりまして失礼いたします。

画像の表示、解決いたしました。
FTPサーバーに不要なテンプレートをいくつかアップしていたのが原因だったようです。(整理のためにすっきりさせたら、画像が表示されるようになりました)

ご対応、ありがとうございました。

投稿2016/05/30 02:55

ami15821

総合スコア56

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

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

0

ベストアンサー

いくつか可能性&確認方法を挙げます。

1.ひとまずエラーを表示/確認する

PHP

1<?php 2//エラー出力強制 3ini_set( 'display_errors', 1 ); // エラーを画面に表示(1を0にすると画面上にはエラーは出ない) 4//すべてのエラー表示 5error_reporting( E_ALL );

2.add_actionadd_filterremove_actionremove_filter
フィルターで実装されているような気がする。

3.テンプレートに子テーマを使っている可能性
その場合「 get_bloginfo('template_directory') 」ではなく「 get_stylesheet_directory_uri() 」になります。

4.アクションが動いているか確認する

PHP

1function my_replaceImagePath($arg) { // 名前を変えてみる 2 return $arg.'「テスト」'; // 変化が有ることだけわかるコードまで絞る 3} 4add_filter('the_content', 'my_replaceImagePath'); // 名前を変えてみる

投稿2016/05/24 06:10

kei344

総合スコア69398

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

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

ami15821

2016/05/24 06:25

回答、ありがとうございます。 すいません、エラーを表示させるコードはどこに張るのでしょうか? 設定ファイルのwp-config.phpファイルに追記するのでしょうか?
kei344

2016/05/24 06:34

functions.php の replaceImagePath より前で動作すると思います。 そういえば WordPressにはデバックモードが有るのでそちらでも良かったですね。 【WordPress初心者におすすめ!デバッグモードの使い方 | Mignon Style】 http://mignonstyle.com/debug-mode/
ami15821

2016/05/24 06:53 編集

functions.phpに記載しましたが、エラーの表示はありませんでした。 functions.phpにeplaceImagePath より前に以下のように記載しました。 <?php //エラー出力強制 ini_set( 'display_errors', 1 ); // エラーを画面に表示(1を0にすると画面上にはエラーは出ない) //すべてのエラー表示 error_reporting( E_ALL ); // 固定ページ画像パス省略 function replaceImagePath($arg) { $content = str_replace('"images/', '"' . get_bloginfo('template_directory') . '/images/', $arg); return $content; } add_action('the_content', 'replaceImagePath'); // brの削除 remove_filter ( 'the_content', 'wpautop' ); remove_filter ( 'the_excerpt', 'wpautop' ); ?> エラーが出る場合、管理画面のfunctions.phpの画面を表示しているときに出るのでしょうか?
kei344

2016/05/24 06:53 編集

エラーは出力されるページに出ます。 ではそのままの状態で他のテストもしてみてください。なんとなく「add_filter」部分かなと思うのですが。
ami15821

2016/05/24 07:13 編集

五月雨で失礼します。 【変更前】add_action('the_content', 'replaceImagePath'); 【変更後】add_action('add_filter', 'remove_action'); 表示に変化なしでした。
kei344

2016/05/24 07:10

あなたのコードに「add_action」という関数が使われているがそれは「add_filter」という関数のほうが適切ではないか、ということです。
ami15821

2016/05/24 07:19

度々失礼いたしました。 【変更前】add_action('the_content', 'replaceImagePath'); 【変更後】add_filter('the_content', 'replaceImagePath'); 表示に変化なしでした。 次も試してみます。
ami15821

2016/05/24 09:08

お世話になっています。 3.テンプレートに子テーマを使っている可能性 まで確認しましたが、表示に変更はありません。 最後の4.アクションが動いているか確認するの記載場所も解りかねました。。。 現状、functions.phpは以下の設定になっています。 <?php //エラー出力強制 ini_set( 'display_errors', 1 ); // エラーを画面に表示(1を0にすると画面上にはエラーは出ない) //すべてのエラー表示 error_reporting( E_ALL ); // 固定ページ画像パス省略 function replaceImagePath($arg) { $content = str_replace('"images/', '"' . get_stylesheet_directory_uri() . '/images/', $arg); return $content; } add_filter('the_content', 'replaceImagePath'); // brの削除 remove_action ( 'the_content', 'wpautop' ); remove_action ( 'the_excerpt', 'wpautop' ); ?>
kei344

2016/05/24 10:52

> 記載場所も解りかねました functions.php です。 > remove_action remove_filter です。
ami15821

2016/05/24 11:08

返信ありがとうござます。 4.アクションが動いているか確認する。 remove_actionをremove_filterに変更する。 まで行いましたが、画像は表示されない状況です。
kei344

2016/05/24 12:20

4はあくまで確認用です。記事の本文の後ろに「テスト」が付きましたか?また、wpautopによる整形は行われていますか?そういうのを見るものですので、それを書いたから画像が表示されるわけではありません。
ami15821

2016/05/24 13:22

記事の本文に「テスト」だけが表示されています。 wpautopによる整形、というのはしていないかと思います。
kei344

2016/05/24 14:20

元のreplaceImagePathとそれを適用させているadd_filterを削除してテスト用だけにして、それでも「テスト」以外内容が出力されないか確認してみてください。それで本文が表示されたら$content = str_replace('"images/', '"' . get_stylesheet_directory_uri() . '/images/', $arg);の部分が問題ということになります。 もし「テスト」だけが表示される場合は本文に記事がないか、別のプラグインで消している可能性、テンプレートでの記述方法に問題が有る可能性があります。
ami15821

2016/05/24 14:56

functions.php を修正しましたら、「テスト」が表示されなくなりました。 本文も表示されません。 functions.phpの修正は以下のようにしましたが、間違っているでしょうか? <?php //エラー出力強制 ini_set( 'display_errors', 1 ); // エラーを画面に表示(1を0にすると画面上にはエラーは出ない) //すべてのエラー表示 error_reporting( E_ALL ); // brの削除 remove_filter ( 'the_content', 'wpautop' ); remove_filter ( 'the_excerpt', 'wpautop' ); function my_replaceImagePath($arg) { // 名前を変えてみる return $arg.'「テスト」'; // 変化が有ることだけわかるコードまで絞る } ?> 個別ページ(single.php)に<?php the_content(); ?>があり、カスタム投稿タイプにタイトルと本文記事を1件投稿してあるのですが、<?php the_content(); ?>に本文が読み込まれてません。 関係ない内容でしたらすいません。。。 固定ページも投稿ページも画像が読み込まれていないので、記載しました。
kei344

2016/05/24 15:37

add_filter('the_content', 'my_replaceImagePath'); まで消したらそりゃ「テスト」は表示されませんよ。 まぁ、それは置いておいて、the_content(); で本文が表示されていないのであればそれにフィルタをかけたところで表示されないです。デフォルトテーマに切り替えても本文が表示されなければプラグインかインストールに問題があります。切り替えて表示されるならテーマの作り方に問題があります。
ami15821

2016/05/24 16:23

デフォルトテーマのtwenty sixteen に切り替えますと、本文が表示されました。
kei344

2016/05/24 16:30

デフォルトテーマの functions.php に下記コードを追記してみて、思った動作するのかを確認し、それ以外の部分に関してはテンプレートの作り方を調べながら修正されたほうが良いと思います。 function replaceImagePath($arg) { $content = str_replace('"images/', '"' . get_stylesheet_directory_uri() . '/images/', $arg); return $content; } add_filter('the_content', 'replaceImagePath');
ami15821

2016/05/24 16:45

夜分まで対応、ありがとうございます。 上記のコードを追記しましたが、思った動作(固定ページの画像の表示)はされませんでした。 テンプレートの作り方を見直してみます。
ami15821

2016/05/25 02:37

昨晩は対応、ありがとうございました。 途中経過ですが、テンプレートの作り方の見直しをしたところ、single.phpにループタグが入っていなかったためthe_content();の本文が表示されていませんでした。。。 大変初歩的なことで、失礼いたしました。 画像の表示がされない件は未だ解決していないので、もう一度見直してご連絡したいと思います。
kei344

2016/05/26 11:32

str_replace部分のコードをテストしたところ、置換は可能でした。 画像はどこのディレクトリに置いていますか?WPトップと同階層/images/でしょうか。それともテンプレートディレクトリ/images/でしょうか。 また、デフォルトテーマの functions.php にreplaceImagePathコードを追記した状態で、出力されたHTMLに変化は無かったですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問