it-swarm.asia

Görünen url yolunu css ve js dosyalarına değiştirme

Otomatik olarak nasıl dönebileceğimi bilen var mı:

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

içine

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

Doğal olarak, web sitesinin kökünde uygulanabilir bir klasör oluşturabilir, dosyaları oraya yerleştirebilir ve bunlara başvurabilirim, ama şimdi peşindeyim.

Tüm CSS ve JavaScript dosyalarını tema klasöründe tutmanın bir yolunu arıyorum, ancak sayfanın kaynağını görüntülerseniz wordpress'in yukarıda belirtilen URL yolunu göstermesini istiyorum.

İdeal bir durumda, herhangi bir resim içeren tema klasörümde referans verilen tüm dosyalar için otomatik olarak bunu yapan eklenebilir bir kod parçası arıyorum.

4

Sonuçta iki şeye ihtiyacın olacağını düşünüyorum:

İlk olarak, .htaccess dosyanızdaki gibi bir yeniden yazma kuralı şöyle:

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

İkinci olarak, kendi işlevlerinize bir filtre ekleyin.

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');

Birkaç uyarı: - Bir eklenti veya herhangi bir şey bloginfo () veya get_bloginfo () kullanmıyorsa, filtreyi tetiklemeyecektir. İşlevinizi gerektiği gibi diğer filtrelere asarak bu sorunu çözebilirsiniz. - bazı eklentiler/temalar/vb. kodlanmış yollar kullanır. Yolu bulmak için WP'nin işlevlerinden birini kullanmak için kodu değiştirmek dışında, bu konuda yapabileceğiniz pek bir şey yok.

İşte yirmi temayı kullanan aynı örnek (css/js alt dizinleri yok, ancak fikir aynı.)

.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

İdeal bir durumda, otomatik olarak eklenebilecek bir kod parçası arıyorum. Bunu, kendi resimlerim de dahil olmak üzere tema klasörümde referans verilen tüm dosyalar için otomatik olarak yapar.

Sorunu çözecek alternatif bir çözüm önereceğim.

wp-content/themes/temanızdan kök dizininize/css sembolik bir bağlantı oluşturun

Linux'ta sembolik bir bağlantı oluşturmak için #ln -s komutunu kullanın. Örneğin:

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

Artık http://example.com/wp-content/themes/your_theme_name/ içindeki herhangi bir dosyaya url kullanılarak erişilebilir:

http://example.com/css/

Bunun çalışması için httpd.conf dosyanızdaki FollowSymLinks direktifine izin vermelisiniz. Ayrıca, httpd.conf'taki ayarı geçersiz kılacak bir .htaccess dosyasına da yerleştirebilirsiniz.

Httpd.conf dosyasında ayar şöyle olacaktır:

<Directory />
Options Indexes FollowSymLinks
</Directory>

Değişikliğin yürürlüğe girmesinden önce Apache'yi yeniden başlatmanız gerekecek:

#/etc/init.d/Apache2 restart

SymLinks hakkında daha fazla bilgiyi Maxi-Pedia ve Apache Docs adresinde bulabilirsiniz.

2
Chris_O