使用后重定向get_delete_post_link()
这可能是最简单的trashed_post
措施:
Code:
add_action( \'trashed_post\', \'wpse132196_redirect_after_trashing\', 10 );
function wpse132196_redirect_after_trashing() {
wp_redirect( home_url(\'/your-custom-slug\') );
exit;
}
或者你可以根据
$_GET
通过挂接到操作
parse_request
:
Code:
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;
}
}
请注意,这两种解决方案也将在管理端进行拦截,因此您可能需要添加一个检查来防止这种情况发生。
更改返回的链接get_delete_post_link()
查看源代码,在link-template.php
. 您将看到$delete_link
已构造。您可以通过相应的过滤器更改函数的返回get_delete_post_link
. 通过这种方式,您可以将链接指向自定义页面或端点,以便前端post删除。
Code:
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}" );
}
您可以处理自定义的删除后请求。请注意,上面的示例性代码不会删除任何内容,如果我没有弄错的话,我还没有实际测试它,它只是概念验证代码,所以您必须自己适应您的需要。