サポート » 使い方全般 » WordPress で jQuery を使用する場合の画像へのパスの指定方法

  • 解決済 tk5

    (@tk5)


    jQuery を使って、マウスオーバー時に li 要素の背景画像を表示するようにしようと思っています。その際に、画像へのパスを記述する際に「相対パス」で記述するとうまくいきません(画像が表示されません)。

    「絶対パス(フルパス)」で記述するとうまくいく(画像が表示される)のですが、これは、そういうもの(仕様)なのでしょうか? それとも「相対パス」で記述する方法があるのでしょうか?

    現在以下のような記述でローカル環境で試してみています。
    「url(http://localhost/wp/wp-content/themes/wptest/images/arrow_green_small-trans.png)」では表示されるのですが、「url(/images/arrow_green_small-trans.png)」や「url(../images/arrow_green_small-trans.png)」などいろいろと試しましたがうまくいきません。

    画像のフォルダ「images」とjQuery ファイルのフォルダ「js」は同じ階層にあります。

    jQuery(document).ready(function($) {
    $('#cat_list ul li').css('background', 'none');
    
    $('#cat_list ul li a').hover(
    	function() {
    		$(this).parent().css('background', 'url(http://localhost/wp/wp-content/themes/wptest/images/arrow_green_small-trans.png) no-repeat');
    	},
    	function() {
    		$(this).parent().css('background', 'none');
    
    	});
    });
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • nobita

    (@nobita)

    こんにちは

    「絶対パス(フルパス)」で記述するとうまくいく(画像が表示される)のですが、これは、そういうもの(仕様)なのでしょうか? それとも「相対パス」で記述する方法があるのでしょうか?

    WordPressは、フルパスが基本です。

    これは、テーマのテンプレートが、実際には、wp-content/themes/themeに置かれているのに、ブログで表示される場合は、wp-contentと同じ階層にある、index.phpとして表示されるため、リンクが切れてしまうために、発生します。

    相対リンクにするための関数として

    http://codex.wordpress.org/Function_Reference/wp_make_link_relative

    などの関数があります。

    実際問題として、サーバ移転や、httpからhttpsに切り替わる時などに、ハードコーディングされた絶対URLなどは、支障が発生するので、困る事もありますが、

    スクリプトをインクルードする wp_enqueue_script等は、http:の部分を省略して記述する事も出来るようになっていますが、いずれにしろ、相対リンク化は、個別のカスタマイズの範疇になります。

    トピック投稿者 tk5

    (@tk5)

    nobita 様、

    早速ご回答いただきありがとうございます。

    wp-contentと同じ階層にある、index.phpとして表示されるため、リンクが切れてしまうために、発生します。

    といういこと大変参考になりました。

    試しに、フルパスの代わりに「url(wp-content/themes/wptest/images/arrow_green_small-trans.png)」と記述したところ、トップページでは画像が表示されましたが、個別ページやカテゴリーページでは、表示されないため素直にフルパスで記述することとしました。

    どうもありがとうございました。

    トピック投稿者 tk5

    (@tk5)

    解決済みにするのを忘れました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「WordPress で jQuery を使用する場合の画像へのパスの指定方法」には新たに返信することはできません。