J'essaie de désactiver et de réactiver un javascript dans mon thème enfant - à partir du thème vingt-quatre (afin que les mises à jour n'affectent pas les choses).
Ce que je veux vraiment faire est de changer la largeur de la colonne de 4 à 3 dans le pied de page, mais je ne veux pas changer le fichier /js/functions.js directement dans le thème principal (peut-être existe-t-il un autre moyen/meilleur de réaliser cela !)
Je mets ceci dans functions.php dans le thème enfant:
/* activate and decative js class */
class aadjs {
public function __construct() {
add_action( 'wp_enqueue_scripts', array( $this, 'deactivejs'), 100 );
}
public function deactivejs() {
wp_dequeue_script( 'twentyfourteen-script' );
add_action( 'wp_enqueue_scripts', array( $this, 'reactivatejs'), 100);
}
//Why isn't this function executed?
public function reactivatejs() {
echo get_stylesheet_directory_uri() . '/js/functions.js';
exit;
wp_enqueue_script( 'twentyfourteen-script', get_stylesheet_directory_uri() . '/js/functions.js', array( 'jquery' ), '20140616', true );
}
}
$x = new aadjs();
Je veux désactiver js puis réactif js mais reactivatejs n'est pas appelé. Qu'est-ce que je fais mal? Le chemin d'accès au nouveau fichier js dans le thème enfant est défini correctement et il existe.
Le /js/functions.js que je veux changer:
_window.load( function() {
// Arrange footer widgets vertically.
if ( $.isFunction( $.fn.masonry ) ) {
$( '#footer-sidebar' ).masonry( {
itemSelector: '.widget',
columnWidth: function( containerWidth ) {
return containerWidth / 4;
},
gutterWidth: 0,
isResizable: true,
isRTL: $( 'body' ).is( '.rtl' )
} );
}
} );
À (remarquez les 3)
_window.load( function() {
// Arrange footer widgets vertically.
if ( $.isFunction( $.fn.masonry ) ) {
$( '#footer-sidebar' ).masonry( {
itemSelector: '.widget',
columnWidth: function( containerWidth ) {
return containerWidth / 3;
},
gutterWidth: 0,
isResizable: true,
isRTL: $( 'body' ).is( '.rtl' )
} );
}
} );
Je ne suis pas sûr de savoir pourquoi vous utilisez la méthode exit() in your
reactivatejs () `, car cela casse la méthode avant même qu'elle ne charge votre script (, espérons-le à des fins de débogage ).
Je pense aussi qu’il n’est pas nécessaire de créer une classe pour cela, une simple fonction spaghetti conviendrait parfaitement. Quoi qu'il en soit, si vous devez utiliser une classe, le constructeur de la classe n'est supposé d'aucun travail, le constructeur est supposé initialiser la classe. Vous voudriez prendre votre action en dehors du constructeur. En outre, lorsque vous supprimez des scripts et des styles, vous souhaitez annuler l’enregistrement et la suppression de la file d’attente.
Voici les solutions possibles:
add_action( 'wp_enqueue_scripts', function ()
{
// Remove your script
wp_dequeue_script( 'twentyfourteen-script' );
wp_deregister_script( 'twentyfourteen-script' );
// Add new script
wp_enqueue_script( 'lets-be-unique-here', get_stylesheet_directory_uri() . '/js/functions.js', ['jquery'], '20140616', true );
}, 100 );
add_action( 'wp_enqueue_scripts', 'addjs', 100 );
function addjs()
{
// Remove your script
wp_dequeue_script( 'twentyfourteen-script' );
wp_deregister_script( 'twentyfourteen-script' );
// Add new script
wp_enqueue_script( 'lets-be-unique-here', get_stylesheet_directory_uri() . '/js/functions.js', ['jquery'], '20140616', true );
}
class AddJS
{
public function addjs ()
{
// Remove your script
wp_dequeue_script( 'twentyfourteen-script' );
wp_deregister_script( 'twentyfourteen-script' );
// Add new script
wp_enqueue_script( 'lets-be-unique-here', get_stylesheet_directory_uri() . '/js/functions.js', ['jquery'], '20140616', true );
}
}
PUIS
add_action( 'wp_enqueue_scripts', ['AddJS','addjs'], 100 );
OU
$addjs = new AddJS();
add_action( 'wp_enqueue_scripts', [$addjs,'addjs'], 100 );
class AddJS
{
public function addAction ()
{
add_action( 'wp_enqueue_scripts', [$this,'addjs'], 100 );
}
public function addjs ()
{
// Remove your script
wp_dequeue_script( 'twentyfourteen-script' );
wp_deregister_script( 'twentyfourteen-script' );
// Add new script
wp_enqueue_script( 'lets-be-unique-here', get_stylesheet_directory_uri() . '/js/functions.js', ['jquery'], '20140616', true );
}
}
$addjs = new AddJS();
$addjs->addjs();