0

私のプラグインには、管理領域用のスタイルがいくつかあります。もともと、メインのプラグイン ファイルでインラインで実行していましたが、現在はキューに入れています。スタイルシートは適切にキューに登録されています。スタイルシートで参照されている画像が表示されないことを除いて、すべてのスタイルが機能しています。スタイルがインラインの場合は正常に表示されましたが、スタイルシートをエンキューすると表示されません。スタイルシートは、スタイルが以前インラインで見つかったプラグイン ファイルと同じディレクトリにあるため、パスの問題ではありません。

エンキューした方法は次のとおりです。

function my_style() {
wp_register_style( 'style', plugins_url('style.css', __FILE__) );
wp_enqueue_style( 'style' );
}
add_action( 'admin_enqueue_scripts', 'my_style' );

繰り返しになりますが、他のすべてのスタイルが正常に機能するため、エンキューは正しいです。これが私のスタイルシートの画像の例です。

#mycustom-mb h3:before {
    content:url("../wp-content/plugins/my-plugin/images/banner.png");
}

また、同じ行は、スタイルがエンキューではなくインラインの場合にも機能します。WordPress は私の画像をブロックするために何か変なことをしていますか? Firebugでファイルが見つからないというエラーが表示されることも、ヘッダーに壊れた画像リンクが表示されることもありません(パスが間違っている場合のように)。そこにはありません。また、Firebug では、他のすべての画像とは異なり、Firebug は、リンクの上にカーソルを置いたときに画像を検索しようとさえしません。そのため、スタイルシートが管理者のキューに入れられると、WordPress が画像に対して奇妙なことをしているように感じます。

CSS をインラインまたはインクルードすると、プラグインのアクティブ化で「予期しない文字」という警告メッセージが表示されるため、正常に動作しますが、通常のインクルードも実行できません。

4

1 に答える 1

2

css ルールのいずれかの内部で使用する場合url()、パスはそれらが含まれるスタイルシートに関連していることを覚えておく必要があります。

したがって、インライン スタイルの場合、パスは に対する相対パスですが、/wp-admin/にあるスタイルシートをロードすると/wp-content/plugins/my-plugin/style.css、すべてのパスは に対する相対パスになります/wp-content/plugins/my-plugin/

したがって、画像が見つかった正しい URL をターゲットにするには、これを使用するだけです。

#mycustom-mb h3:before {
    content:url("images/banner.png");
}

現在、Chrome 開発者ツールを使用していますが、スタイルシートのルールによってブラウザが画像をロードすると、404 not found エラーが表示されることがわかっているため、FireBug でエラーが表示されない理由がわかりません。

于 2013-10-06T17:46:17.123 に答える