Para redirigir después del uso de get_delete_post_link()
probablemente sea más fácil engancharlo en la acción trashed_post
:
Código:
add_action( 'trashed_post', 'wpse132196_redirect_after_trashing', 10 );
function wpse132196_redirect_after_trashing() {
wp_redirect( home_url('/your-custom-slug') );
exit;
}
O puedes hacerlo dependiente de la variable $_GET
correspondiente al enganchar en la acción parse_request
:
Código:
add_action( 'parse_request', 'wpse132196_redirect_after_trashing_get' );
function wpse132196_redirect_after_trashing_get() {
if ( array_key_exists( 'trashed', $_GET ) && $_GET['trashed'] == '1' ) {
wp_redirect( home_url('/your-custom-slug') );
exit;
}
}
Tenga en cuenta que ambas soluciones también se interceptarán en el lado del administrador, por lo que es posible que desee agregar una verificación para evitarlo.
Para cambiar el enlace devuelto por get_delete_post_link()
, consulte la fuente en link-template.php
. Allí verás cómo se construye el $delete_link
. Puede modificar el retorno de la función a través del filtro correspondiente get_delete_post_link
. De esta manera, puede hacer que el enlace apunte a su página personalizada o punto final para la eliminación posterior de la interfaz.
Código:
add_filter( 'get_delete_post_link', 'wpse132196_change_delete_post_link', 10, 3 );
function wpse132196_change_delete_post_link( $id = 0, $deprecated = '', $force_delete = false ) {
global $post;
$action = ( $force_delete || !EMPTY_TRASH_DAYS ) ? 'delete' : 'trash';
$qargs = array(
'action' => $action,
'post' => $post->ID,
'user' => get_current_user_id()
);
$delete_link = add_query_arg( $qargs, home_url( sprintf( '/yourarcticles/' ) ) );
return wp_nonce_url( $delete_link, "$action-post_{$post->ID}" );
}
Desde donde puede encargarse del manejo de su solicitud de eliminación personalizada posterior. Tenga en cuenta que el código de ejemplo anterior no eliminará nada; si no me equivoco, no lo he probado, es solo una prueba de código de concepto, por lo que debe adaptarse a sus necesidades.