it-swarm-pt.tech

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

Alguém sabe como posso virar automaticamente:

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

para dentro

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

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

Eu estou procurando uma maneira de manter todos os arquivos CSS e JavaScript dentro da pasta do tema, mas eu gostaria que o wordpress mostrasse o caminho de URL delineado acima se você visualizasse a origem da página.

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

4
NetConstructor.com

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

Primeiro, uma regra de reescrita em 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 ao functions.php do seu tema 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 usa 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 que você possa fazer sobre isso, exceto 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');
2
gabrielk

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.

Eu vou propor uma solução alternativa que resolverá 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 http://example.com/wp-content/themes/your_theme_name/ pode ser acessado usando o url:

http://example.com/css/

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 SymLinks em Maxi-Pedia e no Apache Docs

2
Chris_O