Alterando o caminho do URL visível para os arquivos css & js

4

Alguém sabe como posso virar automaticamente:

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

em

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

Naturalmente, eu poderia simplesmente criar a pasta aplicável dentro da raiz do site, colocar os arquivos lá e apenas referenciá-los, mas agora é isso que eu sou depois.

Estou procurando uma maneira de manter todos os CSS & Arquivos JavaScript dentro da pasta do tema, mas gostaria que o wordpress mostrasse o caminho do URL descrito acima se você visualizasse a origem da página.

Em uma situação ideal, estou procurando uma parte do código que possa ser adicionada para fazer isso automaticamente para todos os arquivos mencionados na pasta do meu tema, incluindo quaisquer imagens.

    
por NetConstructor.com 09.09.2010 / 23:40

2 respostas

2

De improviso, acho que você precisaria de duas coisas:

Primeiro, uma regra de reescrita no seu arquivo .htaccess assim:

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

Em segundo lugar, adicione um filtro às funções do seu tema.php da seguinte forma:

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

Algumas ressalvas: - se um plugin ou algo não usar bloginfo () ou get_bloginfo (), ele não acionará o filtro. Você pode contornar isso conectando sua função a outros filtros conforme necessário. - alguns plugins / themes / etc usam caminhos codificados. Não há muito o que fazer a não ser modificar o código para usar uma das funções do WP para obter o caminho.

Aqui está o mesmo exemplo usando o tema vigésimo (sem subdiretórios css / js, mas a idéia é a mesma).

.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');
    
por gabrielk 10.09.2010 / 00:58
2
  

Em uma situação ideal, estou procurando uma parte do código que possa ser adicionada automaticamente > faz isso para todos os arquivos referenciados na pasta do meu tema, incluindo quaisquer imagens.

Vou propor uma solução alternativa que resolva o problema.

Crie um link simbólico de wp-content / themes / your-theme para seu diretório raiz / css

Para criar um link simbólico no Linux, use o comando #ln -s . Por exemplo:

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

Agora, qualquer arquivo em enlace pode ser acessado usando o URL:

enlace

Para que isso funcione, você deve permitir a diretiva FollowSymLinks no arquivo httpd.conf. Você também pode colocá-lo em um arquivo .htaccess que irá sobrescrever a configuração em httpd.conf

No httpd.conf, a configuração seria:

<Directory />
Options Indexes FollowSymLinks
</Directory>

Antes da mudança ter efeito, você terá que reiniciar o Apache:

#/etc/init.d/apache2 restart

Você pode ler mais sobre o SymLinks em Maxi-Pedia e no Apache Docs

    
por Chris_O 10.09.2010 / 01:32