Cambiar URLs para contenido estático

7 nov 2016, 13:55:53
Vistas: 21.2K
Votos: 3

Mi host tiene un cluster NGINX de alta velocidad.

Me gustaría cargar mis archivos CSS, JS y multimedia desde este cluster. He seguido estos pasos y agregué el nuevo dominio estático a través de mi DNS.

La nueva configuración DNS se ha propagado correctamente y puedo acceder a mis archivos estáticos así http://static.example.com/wp-content/themes/mytheme/style.css.

Para empezar, me gustaría cambiar la URL de carga de medios. He intentado agregar el siguiente fragmento a wp-config.php antes de require_once(ABSPATH.'wp-settings.php');

/** Ruta al cluster NGINX */
define( 'UPLOADS', ''.'http://static.example.com/wp-content/uploads' );

Al guardar el fragmento anterior en wp-config.php y actualizar el sitio, mis archivos multimedia (imágenes) se están cargando desde la siguiente URL:

http://www.example.com/http://static.example.com/wp-content/uploads/2016/11/image-name.jpg

Como pueden ver, la URL raíz se está cargando antes que la URL estática. ¿Cuál es la forma correcta de establecer la nueva ruta de carga? ¿Debería también realizar una búsqueda y reemplazo para las cargas anteriores?

También asumo que debo cambiar mis rutas JS y CSS en functions.php, ¿así?:

// Antes
wp_enqueue_script( 'script', get_template_directory_uri() . '/js/script.js', array(), '20161025', false );

// Después
wp_enqueue_script('script', 'http://static.example.com/wp-content/themes/mytheme/js/script.js', array(), '20161025', false );
2
Comentarios

Parece que asume que uploads es una carpeta. Quizás podrías filtrar la salida de alguna manera para usar otra URL

jgraup jgraup
7 nov 2016 14:56:53

Gracias @jgraup. Tu comentario motivó una investigación más profunda y encontré la respuesta a continuación :)

Sam Sam
11 nov 2016 10:55:11
Todas las respuestas a la pregunta 2
0

Esta respuesta ha resuelto el problema.

Necesitas agregar esto a tu archivo functions.php.

/**
* URL personalizada para subida de medios
* @link https://wordpress.stackexchange.com/questions/77960/wordpress-3-5-setting-custom-full-url-path-to-files-in-the-media-library
*/
add_filter( 'pre_option_upload_url_path', 'upload_url' );

function upload_url() {
    return 'http://static.tudominio.com/wp-content/uploads';
}

No es necesario agregar el fragmento original en wp-config.php.

11 nov 2016 10:52:38
1

La forma más fácil de indicarle a WordPress que use un subdominio (u otro dominio) es definiendo una variable global en tu archivo config.php.

define('WP_CONTENT_URL', 'http://static.tudominio.com');

Coloca esto al principio del archivo de configuración, de lo contrario puede que no funcione. Esto actualizará la URL de todos los recursos en el directorio wp-content.

Lee más sobre esto en el WordPress Codex

14 abr 2017 15:28:45
Comentarios

Esto puede romper algunos plugins (ej. Yoast SEO). Si planeas usarlo para CDN, es mejor usar un plugin de caché que te permita configurar una URL de CDN.

Max S. Max S.
17 oct 2019 17:54:24