Redirect nach dem Löschen im Frontend

Ich verwende den folgenden Link, um einen Beitrag im Frontend von WordPress zu löschen:

<a href="https://wordpress.stackexchange.com/questions/212143/redirect-after-delete-post-in-frontend/ID ) ?>">Delete Post 

Das funktioniert gut. Aber nachdem ich den Post gelöscht habe, zeigt er nur eine leere Seite der index.php. Ich möchte den Autor, der den Beitrag gelöscht hat, auf eine Kategorieseite wie / nach dem Archiv redirect. Irgendeine Idee, wie ich das tun kann?

Danke für Ihre Hilfe und viele Grüße.

Solutions Collecting From Web of "Redirect nach dem Löschen im Frontend"

Hier ist ein Ansatz, bei dem der Umleitungsort nach dem Papierkorb geändert wird :

 /** * Redirect to the home url after trashing a post on the front-end * * @link http://wordpress.stackexchange.com/a/212146/26350 */ add_action( 'trashed_post', function() { add_filter( 'wp_redirect', function( $location, $status ) { if ( is_wpse_part_of_admin_url( $location ) ) && 1 == get_wpse_query_arg( $location, 'trashed' ) ) $location = esc_url( home_url() ); // Adjust to your needs! return $location; } ); } ); 

Wir stellen sicher, dass der Umleitungsort nicht mit Hilfe unserer is_wpse_part_of_admin_url() im Backend liegt.

Es gibt praktische functionen wie add_query_arg() und remove_query_arg() aber nicht get_query_arg() . Also hier ist unsere Hilfsfunktion:

 /** * Get query argument from an url * * @uses wp_parse_str() * @param string $url * @param string $arg * @return string|false */ function get_wpse_query_arg( $url, $arg ) { wp_parse_str( parse_url( $url, PHP_URL_QUERY ), $args ); if( isset( $args[$arg] ) ) return $args[$arg]; return false; } 

Hier ist unsere Hilfsfunktion, um festzustellen, ob die URL eine Back-End-URL ist:

 /** * Check if the url starts with admin_url() * * @uses admin_url() * @param string $url * @return boolean */ function is_wpse_part_of_admin_url( $url ) { return 0 === strpos( $url, admin_url() ); } 

Ich habe ein bisschen mehr in dieses Thema und fand diese Lösung, die perfekt für mich funktioniert.

1 Fügen Sie diesen Code zu functions.php hinzu:

 // Delete post function delete_post(){ global $post; $deletepostlink= add_query_arg( 'frontend', 'true', get_delete_post_link( get_the_ID() ) ); if (current_user_can('edit_post', $post->ID)) { echo 'Borrar'; } } //Redirect after delete post in frontend add_action('trashed_post','trash_redirection_frontend'); function trash_redirection_frontend($post_id) { if ( filter_input( INPUT_GET, 'frontend', FILTER_VALIDATE_BOOLEAN ) ) { wp_redirect( get_option('siteurl').'/page-deleted-post' ); exit; } } 

2 Rufen Sie die function auf Ihrer Vorlagedatei (single.php oder was auch immer) auf:

 echo delete_post();