web-dev-qa-db-fra.com

Servir wp-includes (front-end) javascript depuis un domaine différent?

Le codex WordPress pointe vers un moyen extrêmement simple de changer le URL du répertoire wp-content, ce qui revient à l'ajouter dans wp-config. php:

define( 'WP_CONTENT_URL', 'http://example.com/wp-content');

Et cela fait le travail de servir la plupart des fichiers JavaScript et CSS sur mon site Web à partir du domaine différent, sauf deux.

http://mywebsite.com/wp-includes/js/comment-reply.js
http://mywebsite.com/wp-includes/js/quicktags.js

La raison en est très claire: ces fichiers JavaScript sont fournis à partir du répertoire wp-includes , qui n'est pas affecté par la règle susmentionnée.

Alors, existe-t-il une méthode simple ou similaire pour les faire servir à partir de example.com, c'est-à-dire le domaine de mon choix? ou la désinscription et la mise en file d'attente des scripts à partir d'une URL personnalisée (effectuée dans functions.php) constituent-elles le seul moyen?

2
its_me

D'accord, j'ai essayé de nombreux codes et méthodes (littéralement) et j'ai échoué lamentablement. Ainsi, comme je l'ai dit dans la question, le seul moyen sûr semble être de ré-enregistrer (désenregistrer et mettre en file d'attente) les scripts.

Les scripts:

http://mywebsite.com/wp-includes/js/comment-reply.js
http://mywebsite.com/wp-includes/js/quicktags.js

Doit être servi à partir de:

http://example.com/wp-includes/js/comment-reply.js
http://example.com/wp-includes/js/quicktags.js

Code dans functions.php:

add_action('wp_enqueue_scripts','wpse56742_register_script');
function wpse56742_register_script(){

    //Register and enqueue Comment Reply script
    wp_deregister_script('comment-reply');
    wp_register_script('comment-reply', 'http://example.com/wp-includes/js/comment-reply.js', false, false);
    wp_enqueue_script( 'comment-reply' );

    //Re-register quicktags script
    wp_deregister_script('quicktags');
    wp_register_script('quicktags', 'http://example.com/wp-includes/js/quicktags.js', false, false, true);
    wp_localize_script( 'quicktags', 'quicktagsL10n', array(
        'wordLookup' => __('Enter a Word to look up:'),
        'dictionaryLookup' => esc_attr(__('Dictionary lookup')),
        'lookup' => esc_attr(__('lookup')),
        'closeAllOpenTags' => esc_attr(__('Close all open tags')),
        'closeTags' => esc_attr(__('close tags')),
        'enterURL' => __('Enter the URL'),
        'enterImageURL' => __('Enter the URL of the image'),
        'enterImageDescription' => __('Enter a description of the image'),
        'fullscreen' => __('fullscreen'),
        'toggleFullscreen' => esc_attr( __('Toggle fullscreen mode') ),
        'textdirection' => esc_attr( __('text direction') ),
        'toggleTextdirection' => esc_attr( __('Toggle Editor Text Direction') )
    ));
    wp_enqueue_script( 'quicktags' );

}

En ce qui concerne le code utilisé dans wp_localize_script, je l’ai obtenu directement du tronc (vous pouvez également l’obtenir pour votre version WP, pour Par exemple, pour WP 3.4, le lien serait http://core.svn.wordpress.org/tags/3.4/wp-includes/media.php).


FAQ: Pourquoi quicktags.js est-il d'abord chargé dans le système frontal? Parce que j'utilise le plugin - Basic Quicktags Comment

2
its_me

Je sais que la question est très ancienne, mais je pense que certains fans de WordPress l’attireront peut-être encore. Jusqu’à présent, WordPress n’avait pas mis en place de moyen de définir "WP_INCLUDES_URL" comme on peut définir "WP_CONTENT_URL".

Voici donc une solution de contournement simple, qui ferait l'affaire pour les scripts chargés à partir de wp-includes, en utilisant le filtre "script_loader_src":

function filter_wpincludes( $src, $handle ) { 
    $src = str_replace(site_url("/wp-includes"), "https://static.example.com/wp-includes", $src); 
    return $src; 
}; 

// then just add the filter 
add_filter( 'script_loader_src', 'filter_wpincludes', 10, 2 ); 

Bien sûr, ce code appartient à votre functions.php dans votre thème. Ce filtre s’exécute sur chaque script chargé par WordPress, puis la fonction remplace l’ancien domaine par le nouveau.

Dans le code ci-dessus, le lien suivant:

 http://mywebsite.com/wp-includes/js/comment-reply.js

Sera remplacé par ce lien:

 https://static.example.com/wp-includes/js/comment-reply.js
0
asakka