web-dev-qa-db-ja.com

表示URLパスをcss&jsファイルに変更

誰かが私がどのように自動的に向きを変えることができるかを知っているのを偶然に思います:

http://www.example.com/wp-content/themes/theme-name/css/stylesheeet.css

http://www.example.com/css/stylesheet.css

当然のことながら、Webサイトのルート内に適切なフォルダを作成し、そこにファイルを配置してそれらを参照するだけでも構いませんが、これが私の目的です。

私はすべてのCSSとJavaScriptファイルをテーマフォルダ内に保存する方法を探していますが、あなたがページのソースを見ればwordpressが上記のURLパスを表示したいと思います。

理想的な状況では、私は自分のテーマフォルダ内で参照されているすべてのファイル(画像を含む)に対して自動的にこれを行うことができる、追加可能なコードを探しています。

4

手の込んだ2つのことが必要だと思います。

まず、.htaccessファイルの書き換え規則は次のようになります。

RewriteEngine On
RewriteBase /
RewriteRule ^css/(.*) /wp-content/themes/theme-name/css/$1 [L]
RewriteRule ^js/(.*) /wp-content/themes/theme-name/js/$1 [L]

次に、テーマのfunctions.phpにフィルタを追加します。

function change_css_js_url($content) {
    $current_path = '/wp-content/themes/theme-name/';
    $new_path = '/'; // No need to add /css or /js here since you're mapping the subdirectories 1-to-1
    $content = str_replace($current_path, $new_path, $content);
    return $content;
}
add_filter('bloginfo_url', 'change_css_js_url');
add_filter('bloginfo', 'change_css_js_url');

いくつか注意点があります。 - プラグインまたは何かがbloginfo()またはget_bloginfo()を使用しない場合、フィルタは起動されません。必要に応じて関数を他のフィルタにフックすることでこれを回避できます。 - いくつかのプラグイン/テーマ/ etcはハードコードされたパスを使います。 WPの関数の1つを使用してパスを取得するようにコードを変更する以外に、これに関してできることはあまりありません。

これは20のテーマを使った同じ例です(css/jsサブディレクトリはありませんが、考え方は同じです)。

.htaccess

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^twentyten/(.*) /wp-content/themes/twentyten/$1 [L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

functions.php

function change_css_js_url($content) {
    $current_path = '/wp-content/themes/';
    $new_path = '/'; // No need to add /css or /js here since you're mapping the subdirectories 1-to-1
    $content = str_replace($current_path, $new_path, $content);
    return $content;
}
add_filter('bloginfo_url', 'change_css_js_url');
add_filter('bloginfo', 'change_css_js_url');
2
gabrielk

理想的な状況では、私はテーマフォルダ内で参照されているすべてのファイル(画像を含む)に対して自動的に追加される、追加可能なコードを探しています。

私は問題を解決する代替解決策を提案するつもりです。

wp-content/themes/your-themeからルートディレクトリへのシンボリックリンクを作成します/ css

Linuxでシンボリックリンクを作成するには、#ln -sコマンドを使用します。例えば:

#ln -s /home/user-name/public_html/wp-content/themes/your_theme_name /home/user-name/public_html/css

これで、 http://example.com/wp-content/themes/your_theme_name/ 内の任意のファイルにURLを使用してアクセスできます。

http://example.com/css/

これが機能するためには、httpd.confファイルでFollowSymLinksディレクティブを許可する必要があります。 httpd.confの設定を上書きする.htaccessファイルに入れることもできます。

Httpd.confでは、設定は次のようになります。

<Directory />
Options Indexes FollowSymLinks
</Directory>

変更が反映される前に、Apacheを再起動する必要があります。

#/etc/init.d/Apache2 restart

SymLinkの詳細については、 Maxi-Pedia および Apache Docs を参照してください。

2
Chris_O