it-swarm.com.de

Funktion, die ausgeführt wird, wenn ein Beitrag in den Papierkorb verschoben wird. 

Hallo, gibt es eine Aktion, die ausgeführt werden kann, während ein Beitrag in den Papierkorb verschoben wird? Ich habe versucht, delete_post und deleted_post. Es funktioniert aber zweimal für jede Aktion (vor und nach der Aktion, wie im Codex geschrieben) und die Ausgabe wird nur angezeigt, wenn der Beitrag aus dem Papierkorb gelöscht wird. Beispiel: Ich möchte eine E-Mail an den Autor senden, in der darauf hingewiesen wird, dass sein Beitrag aus irgendeinem Grund in den Papierkorb verschoben wurde, und einige user_meta aktualisieren. wenn ich benutze

add_action('deleted_post', 'emailUser');

oder

add_action('delete_post', 'emailUser');

es funktioniert nur, wenn der Beitrag aus dem Papierkorb gelöscht wird. . .

Update: bekam es für Papierkorb Beiträge mit zu arbeiten

add_action('trash_post', 'emailUser');

das Problem der doppelten Funktionsausführung ist jedoch noch vorhanden. . .

9
Harjeet Singh

Das wird den Trick machen!

add_action('trash_post','my_trash_post_function',1,1);
function my_trash_post_function($post_id){
    if(!did_action('trash_post')){
        // do stuff
    }
}

Hier fügen wir die Funktion hinzu und verhindern, dass der Hook mit did_action mehr als einmal ausgeführt wird:

http://codex.wordpress.org/Function_Reference/did_action

Wie immer haben diese Arten von Haken die Form {post_status}_{post_type}, also trash_post, trash_page, trash_customposttype, publish_page etc

10
Tom J Nowell

Diese Aktion wird einmal aufgerufen, wenn der Beitrag in den Papierkorb verschoben wird, und dann erneut, wenn der Papierkorb geleert wird.

Ihre Funktion könnte überprüfen, ob eine Option mit der Post-ID im Namen vorhanden ist. Wenn die Option nicht vorhanden ist, wird die E-Mail gesendet und die Option festgelegt. Wenn die Option vorhanden ist (z. B. wenn sie ein zweites Mal aufgerufen wird), würden Sie die E-Mail nicht senden.

Denken Sie dann daran, die Option zu löschen, damit Ihre Datenbank nicht mit ihnen gefüllt wird!

add_action( 'delete_post', 'emailUser' );

function emailUser( $postid ) {

   if ( ! get_option( 'user_emailed_' . $postid ) ) {
      // send email here
      update_option( 'user_emailed_' . $postid, 'anything' );
   } else {
      delete_option( 'user_emailed_' . $postid );
   }

}

Lassen Sie mich wissen, ob das funktioniert!

2
add_action('trash_post', 'trash_post_function_name');

Der obige Hook hat in WP 4.7.5 bei mir nicht funktioniert.

Das hat bei mir funktioniert

add_action('wp_trash_post', 'trash_post_function_name');