it-swarm.dev

Změna viditelné cesty url na soubory css a js

Ví někdo, jak se mohu automaticky otočit:

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

do

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

Samozřejmě, že jsem mohl jen vytvořit příslušnou složku v kořenovém adresáři webu, umístit tam soubory a odkazovat na ně, ale to je to, co jsem za tím.

Hledám způsob, jak udržet všechny CSS a JavaScript soubory ve složce motivu, ale rád bych, aby wordpress zobrazil výše uvedenou cestu url, pokud si prohlížíte zdrojovou stránku stránky.

V ideálním případě hledám kus kódu, který lze přidat, že to automaticky dělá pro všechny soubory odkazované v mé složce motivu včetně obrázků.

4

Myslím, že byste potřebovali dvě věci:

Za prvé, pravidlo přepsání ve vašem souboru .htaccess:

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

Za druhé přidejte filtr do funkcí theme.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');

Několik upozornění: - pokud plugin nebo něco nepoužívá bloginfo () nebo get_bloginfo (), filtr se nespustí. Můžete se dostat kolem tohoto zaháknutí své funkce do jiných filtrů podle potřeby. - některé pluginy/motivy/atd. používají pevné cesty. Není toho moc, co byste s tím mohli udělat, s výjimkou úpravy kódu pro použití jedné z funkcí WP pro získání cesty.

Zde je stejný příklad pomocí motivu twentyten (žádné podadresáře css/js, ale nápad je stejný.)

.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

funkce.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

V ideálním případě hledám kus kódu, který lze přidat, že automaticky> dělá to pro všechny soubory odkazované v mé složce motivu včetně obrázků.

Navrhnu alternativní řešení, které problém vyřeší.

Vytvořit symbolický odkaz z wp-content/themes/your-theme do kořenového adresáře/css

Pro vytvoření symbolického odkazu v Linuxu použijte příkaz #ln -s. Například:

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

Jakýkoli soubor v http://example.com/wp-content/themes/your_theme_name/ lze nyní otevřít pomocí adresy URL:

http://example.com/css/

Aby to fungovalo, musíte v souboru httpd.conf povolit direktivu FollowSymLinks. Můžete jej také umístit do souboru .htaccess, který přepíše nastavení v souboru httpd.conf

V httpd.conf by nastavení bylo:

<Directory />
Options Indexes FollowSymLinks
</Directory>

Než se změna projeví, budete muset restartovat Apache:

#/etc/init.d/Apache2 restart

Více o SymLinks si můžete přečíst na Maxi-Pedia a v Apache Docs

2
Chris_O