サポート » 使い方全般 » 固定ページの画像パスについて

  • 初めて質問させていただきます。色々調べまわってどうにもならなかったので何卒ご教授お願い致します。

    固定ページの画像パスについてですが、(OSはMAC)xamppの環境で、自作のテンプレートを作成、デフォルトテンプレートでなく別のテンプレートに固定ページを作成し、そこの画像を配置したいのですが通常の相対パスではダメなのまではわかったのですが、フルパス、またはメディアの追加であれば画像は表示されます。ですが、本番のウェブサーバーにアップロードした際にパスが変わってしまうため、functions.phpに下記を記載しました。

    function replaceImagePath($arg) {
    	$content = str_replace('"img/', '"' . get_bloginfo('template_directory') . '/img/', $arg);
    	return $content;
    }
    add_action('the_content', 'replaceImagePath');

    このコードを使えば 
    <img src="img/hogehoge.jpg">
    で使えるようになるとのことでしたが、何度行っても表示されず困っています。
    template_directory をstylesheet_directoryに変更しても表示されずです。

    どこが間違っているかわからず困っています。何卒ご教授をお願い致します。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • 메텔

    (@digitmaetel)

    相対パスにした場合。feed に影響でませんかね。

    こんにちは

    <img src="img/hogehoge.jpg">

    相対リンクで書きたいという事ですよね。

    あんまり難しく考えずに、

    base要素を使えばいいんじゃないですか?

    https://developer.mozilla.org/ja/docs/Web/HTML/Element/base

    フィルタ使う場合だと、

    add_action( 'wp_head', 'my_base_elements' );
    
    function my_base_elements() {
        $upload_dir     = wp_upload_dir();
        $upload_base_url= $upload_dir['baseurl'] . '/';// または、img までのbase url
        $html           = '<base href="%1$s" />';
        printf( $html, $upload_base_url );
    }

    エディタでは、画像は表示されませんけど

    年付ホルダ使っている場合は、wp_upload_dir()で、サブホルダーも取れるので、ケアしてください。

    おすすめというわけではありませんが、どうしてもという場合は

    functions.phpに追記した部分を一旦削除して

    <img src="img/hogehoge.jpg">

    <img src="<?php echo esc_url( get_template_directory_uri()); ?>/img/hogehoge.jpg">

    にすれば、ローカル、本番サーバー関係なく画像が表示されますよ。

    固定ページからの画像パスを設定したいのですが、固定ページの編集画面ではRocketMartueさんの教えてくれた<?php ・・・・はつかえないとおもいますので、functions.phpに
    下記のように書けばパスをパスを書き出してくれるというブログを見てそのように書きました。

    //固定ページ画像
    function replaceImagePath($arg) {
     $content = str_replace('"img/', '"' . get_bloginfo('stylesheet_directory') . '/img/', $arg);
     return $content;
    }
    add_action('the_content', 'replaceImagePath');

    ですが一向にパスが書き出されず、画像も表示されません。base要素も同じくやってみましたがうまく行かずです。上記のコードを使う以前になにかまちがっているのでしょうか・・・

    すみません。テンプレートファイルに直接記入しているのかと勘違いしていました。
    投稿画面では、ショートコードを使うなどしないとPHPは使えませんね。

    Twenty Sixteenのfunctions.phpに

    function replaceImagePath($arg) {
    	$content = str_replace('"img/', '"' . get_bloginfo('template_directory') . '/img/', $arg);
    	return $content;
    }
    add_action('the_content', 'replaceImagePath');

    のコードを記入。
    テーマフォルダ内にimgフォルダを作成して、hogehoge.jpgをアップロード。
    固定ページに<img src="img/hogehoge.jpg">を記入したところ、画像が表示されました。

    ちなみに
    <img src="/wp-content/themes/twentysixteen/img/hogehoge.jpg">
    の場合は、functions.phpに上記のコードを記入しても記入しなくても画像が表示されます。

    karatemanさんのご利用のテーマは何ですか?

    モデレーター Seisuke Kuraishi (tenpura)

    (@tenpura)

    根本的な開発手順の話となりますが、ローカルでも本番と同じドメイン名・構成でアクセスできる設定にしてしまえば、余計な細工をする必要はなくなります。

    xampp os x VirtualHost hosts で検索すれば、設定方法が見つかると思いますので参考にしてみてください。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「固定ページの画像パスについて」には新たに返信することはできません。