Wie führe ich eine JavaScript-function direkt vor dem Speichern eines Woocommerce-Posts oder Posts aus?

Ich arbeite an diesem Projekt und ich versuche, eine jquery oder Javascript kurz vor dem Speichern der Post auszuführen, habe ich Folgendes versucht:

function do_something_with_a_post($id) { alert('hello'); } add_action('pre_post_update', 'do_something_with_a_post'); 

aber es gibt einen PHP-Fehler … Ich bin mir nicht sicher, wie ich das machen soll.

Hat jemand eine Idee? Vielen Dank!

Solutions Collecting From Web of "Wie führe ich eine JavaScript-function direkt vor dem Speichern eines Woocommerce-Posts oder Posts aus?"

Das Javascript, das Sie haben, wird niemals ausgeführt, weil WordPress dies im Hintergrund als reines PHP ausführt, es gibt HTML, das mit Ihrem Javascript assoziiert wird. Wenn wir uns die Dokumentation zum pre_post_update Hook pre_post_update , heißt es:

Vor $ wpdb-> update () aufgerufen

Was rein in PHP läuft. Wenn es einfacher ist zu sehen, was ich meine, hier ist der vollständige Code auf Trac , wenn Sie oben scrollen, werden Sie feststellen, dass kein HTML-Dokument damit verknüpft ist. Ich glaube, was Sie brauchen, ist, was @Brad Dalton vorgeschlagen hat, und erstellen Sie Ihr eigenes Skript und Enqueue es auf Ihrem Post-Typ (was, wenn der Umgang mit WooCommerce wäre product ).

Zum Beispiel können wir dies zu unserer Datei functions.php hinzufügen:

 /** Admin Enqueue **/ function admin_queue( $hook ) { global $post; if ( $hook == 'post-new.php' || $hook == 'post.php' ) { if ( 'product' === $post->post_type ) { wp_enqueue_script( 'custom-title-here', get_bloginfo( 'template_directory' ) . '/scripts/custom-script.js', 'jquery', '', true ); } } } add_action( 'admin_enqueue_scripts', 'admin_queue' ); 

Weitere Informationen zur Verwendung von wp_enqueue_script , wp_enqueue_script . Je nachdem, was Sie versuchen, können Sie Ihre JS bei der Einreichung des Formulars ausführen:

 jQuery( document ).ready( function( $ ) { $( '#post' ).submit( function( e ) { alert( 'Stopping Form From Submitting.' ); return false; } ); } );