So fügen Sie eine benutzerdefinierte function in wp_insert_post ein

Ich versuche, Push-Benachrichtigungen zu senden, wenn der WordPress-Admin einen neuen Beitrag einfügt.

Ich habe Stunden gesucht, wo ich meine function hinzufügen konnte und nach wp_insert_post ich die corefunktion wp_insert_post in wp-includes/post.php

Diese function gibt die Post_ID zurück, also habe ich mein benutzerdefiniertes Skript vor der Rückkehr hinzugefügt:

 include '../push/send_message.php'; sendNotification($postarr['post_title'],$postarr['guid']); 

Das Problem ist, dass wenn ich diese zwei Zeilen hier importiere

 function wp_insert_post($postarr, $wp_error = false) { ... if ( $update ) { do_action('edit_post', $post_ID, $post); $post_after = get_post($post_ID); do_action( 'post_updated', $post_ID, $post_after, $post_before); } do_action('save_post', $post_ID, $post); do_action('wp_insert_post', $post_ID, $post); include '../push/send_message.php'; sendNotification($postarr['post_title'],$postarr['guid']); return $post_ID; } 

nichts passiert, und wenn Admin einen neuen Beitrag einfügen, ist die Erfolgsseite leer. Wenn ich diese Zeile entferne, ist alles in Ordnung .. sehr seltsam .. Kann mir jemand einen richtigen Weg geben, um das zu tun, was ich brauche?

Solutions Collecting From Web of "So fügen Sie eine benutzerdefinierte function in wp_insert_post ein"

Siehst du diese zwei Haken in dem gehackten Core-Code, den du gepostet hast?

 do_action('save_post', $post_ID, $post); do_action('wp_insert_post', $post_ID, $post); 

Das sind, was Sie brauchen, um dies richtig zu machen.

 function run_on_update_post($post_ID, $post) { var_dump($post_ID, $post); // debug include '../push/send_message.php'; sendNotification($post['post_title'],$post['guid']); return $post_ID; } add_action('save_post', 'run_on_update_post', 1, 2); 

save_post jedes Mal ausgeführt, wenn der Post gespeichert wird. Ich kann nicht schwören, dass Ihre function funktioniert, aber Sie sollten in der Lage sein, Dinge zu ändern, damit es funktioniert. Schauen Sie sich einfach den var_dump und ändern Sie ihn entsprechend. Die include s funktionieren möglicherweise auch nicht, da es sich um relative Pfade handelt. Möglicherweise müssen Sie das auch ändern.

Das Ändern von coredateien ist nicht möglich . Die Plugin-API bietet die Verbindung, die Sie für diese Art von Dingen benötigen. Die function, die Sie ändern möchten, verfügt über zahlreiche verfügbare Hooks . Siehe auch: Aktionen und Filter sind NICHT das Gleiche ….

Die Lösung ist, ein eigenes Plugin * zu erstellen:

 < ?php /* Plugin name: My first plugin */ add_action( 'wp_insert_post', 'callback_so_17530930', 10, 2 ); function callback_so_17530930( $post_ID, $post ) { // Adjust for the desired Post Type if( 'page' !== $post->post_type ) return; include '../push/send_message.php'; sendNotification( $post->post_title, $post->guid ); } 

* Siehe Wo finde ich die Codeschnipsel, die ich hier oder irgendwo anders im Internet gefunden habe?

Legen Sie einfach die PHP-Datei im Ordner wp-content/plugins . Gehe zur Dashboard-Plugins-Seite und aktiviere. Mehr Details beim Codex .