Cambiando la ruta de URL visible a archivos css & js

4

¿Alguien sabe cómo puedo activar automáticamente?

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

en

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

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

Estoy buscando una manera de mantener todos los CSS y amp; Archivos JavaScript dentro de la carpeta de temas, 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 en mi carpeta de temas, incluidas las imágenes.

    
pregunta NetConstructor.com 09.09.2010 - 23:40

2 respuestas

2

De repente, creo que necesitarías dos cosas:

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

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

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

En una situación ideal, estoy buscando un fragmento de código que pueda agregarse automáticamente > hace esto 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.

Crea un enlace simbólico desde wp-content / themes / your-theme a tu 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 enlace utilizando la url:

enlace

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

    
respondido por el Chris_O 10.09.2010 - 01:32

Lea otras preguntas en las etiquetas