web-dev-qa-db-fra.com

Rocket Loader + Wordpress de Cloudflare -> Ignorer les scripts?

J'essaie de faire fonctionner Rocket Loader de Cloudflare sur mon site WP. Tout fonctionne bien sauf le WP Visual Editor. J'ai suivi les conseils ici mais ça ne marche pas:

Comment ajouter des attributs personnalisés à des balises javascript dans Wordpress?

Cloudflare indique que pour que Rocket Loader ignore un fichier javascript, il est nécessaire d’ajouter la balise data-cfasync = "false" avant mon script:

<script data-cfasync="false" src="/javascript.js"></script>    

https://support.cloudflare.com/entries/22063443--How-can-I-have-Rocket-Loader-ignore-my-script-s-in-Automatic-Mode-

Le chargeur de fusée n'ignore pas mes fichiers JS.

Voici mon code:

function rocket_loader_attributes( $url )
{
$ignore = array (

'http://www.mysite.com/wp-includes/js/tinymce/tiny_mce.js?ver=349-21274',
'http://www.mysite.com/wp-admin/js/editor.js?ver=3.4.2'

);
if ( in_array( $url, $ignore ) )
{ // this will be ignored
return "$url' data-cfasync='false";
}

return $url;
}
add_filter( 'clean_url', 'rocket_loader_attributes', 11, 1 );

Quel est le problème avec mon code?

J'utilise actuellement Rocket Loader en mode automatique.

Quelqu'un peut-il aider?

@toscho si vous voyez cela, vous pourrez peut-être me diriger dans la bonne direction.

Je vous remercie.

1
Allen Payne

Notez dans l'exemple que la balise n'a pas l'attribut type='text/javascript'. Pour une raison quelconque, Rocket Loader exige que data-cfasync='false' soit utilisé sans le type='text/javascript'... un bogue?

Votre code ajoute l'attribut data-cfasync='false', mais ne remplace pas le comportement de WordPress consistant à ajouter l'attribut type='text/javascript' également, ce qui permet à Rocket Loader de ne pas "ignorer" votre script.

Il peut être délicat d’annuler ce comportement WordPress puisque le code pertinent ne prend pas en charge les filtres ...

1
nanastopoulos

Vous pouvez obtenir le résultat souhaité avec la fonction suivante (remplacer le descripteur de script par le descripteur de votre script):

add_filter( 'script_loader_tag', function ( $tag, $handle ) {

    if ( 'script-handle' !== $handle )
        return $tag;

    return str_replace( "type='text/javascript' src", ' data-cfasync="false" src', $tag     );
}, 10, 2 );

Le filtre WordPress ci-dessus saisit un script par sa poignée et vous permet d'ajouter/modifier des attributs de script.

1
hawkeye126