it-swarm-es.com

Cambiando la ruta url visible a archivos css & js

¿Alguien sabe cómo puedo convertir automáticamente:

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

dentro

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

Naturalmente, solo podría crear la carpeta correspondiente dentro de la raíz del sitio web, colocar los archivos allí y solo hacer referencia a ellos, pero ahora eso es lo que busco.

Estoy buscando una manera de mantener todos los archivos CSS y JavaScript dentro de la carpeta del tema, pero me gustaría que WordPress muestre la ruta de la URL descrita anteriormente si ve la fuente de la página.

En una situación ideal, estoy buscando un fragmento de código que se pueda agregar y que haga esto automáticamente para todos los archivos a los que se hace referencia dentro de mi carpeta de temas, incluidas las imágenes.

4
NetConstructor.com

De repente creo que necesitarías dos cosas:

Primero, una regla de reescritura en tu archivo .htaccess de esta manera:

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

Segundo, agregue un filtro a las funciones de su tema.php así:

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

Un par de advertencias: - si un complemento o algo no usa bloginfo () o get_bloginfo () no activará el filtro. Puede solucionar esto conectando su función a otros filtros según sea necesario. - Algunos complementos/temas/etc utilizan una ruta codificada. No hay mucho que puedas hacer al respecto, excepto modificar el código para usar una de las funciones de WP para obtener la ruta.

Este es el mismo ejemplo que usa el tema veinte (no hay subdirectorios css/js, pero la idea es la misma).

.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

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

En una situación ideal, estoy buscando un fragmento de código que pueda agregarse> automáticamente para todos los archivos a los que se hace referencia dentro de mi carpeta de temas, incluidas las imágenes.

Voy a proponer una solución alternativa que resolverá el problema.

Cree un enlace simbólico de wp-content/themes/your-theme a su directorio raíz/css

Para crear un enlace simbólico en Linux use el comando #ln -s. Por ejemplo:

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

Ahora se puede acceder a cualquier archivo en http://example.com/wp-content/themes/your_theme_name/ usando la url:

http://example.com/css/

Para que esto funcione, debe permitir la directiva FollowSymLinks en su archivo httpd.conf. También puede ponerlo en un archivo .htaccess que anulará la configuración en httpd.conf

En httpd.conf la configuración sería:

<Directory />
Options Indexes FollowSymLinks
</Directory>

Antes de que se aplique el cambio, deberá reiniciar Apache:

#/etc/init.d/Apache2 restart

Puede leer más sobre SymLinks en Maxi-Pedia y en Apache Docs

2
Chris_O