Ich versuche, ein Javascript in meinem childtheme – vom vierundzwanzigsten Thema zu deaktivieren und zu reagieren (so werden Aktualisierungen Dinge nicht beeinflussen).
Was ich wirklich tun möchte ist, die Spaltenbreite von 4 auf 3 in der Fußzeile zu ändern, aber ich möchte /js/functions.js nicht direkt im Hauptthema ändern (vielleicht gibt es einen anderen / besseren Weg, dies zu erreichen. Bitte sag es !)
Ich setze das in functions.php im Child-Theme:
/* 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();
Ich möchte js deaktivieren und dann reaktive js aber reactivatejs wird nicht aufgerufen. Was mache ich falsch? Der Pfad zur neuen js-Datei im Child-Theme ist richtig eingestellt und existiert auch.
Die /js/functions.js möchte ich ändern:
_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' ) } ); } } );
TO (merke die 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' ) } ); } } );
Ich bin nicht sicher, warum Sie exit() in your
reactivatejs () `Methode verwenden, da dies die Methode bricht, bevor sie sogar Ihr Skript lädt ( hoffentlich ist dies für Debugging-Zwecke ).
Ich denke auch, dass es unnötig ist, eine class zu erstellen, eine einfache Spaghetti-function würde perfekt funktionieren. Wie auch immer, wenn Sie eine class verwenden müssen, ist der Konstruktor der class für keine Arbeit gedacht, der Konstruktor soll die class initialisieren. Sie möchten Ihre Aktion außerhalb des Konstruktors ausführen. Wenn Sie Skripte und Stile entfernen möchten, sollten Sie sich ebenfalls abmelden und aus der Warteschlange entfernen.
Hier sind mögliche Lösungen:
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 ); } }
DANN
add_action( 'wp_enqueue_scripts', ['AddJS','addjs'], 100 );
ODER
$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();