我需要在自定义帖子类型的单个页面上为我的用户提供删除链接。但是,当条目被删除时,用户将在此页面上出现“找不到任何内容”的wordpress错误(因为我们仍然在条目站点+/?deleted=1
). 如何将用户重定向到网站上的其他页面?
以下是我发布删除链接的方式:
if ( !current_user_can( \'delete_bkroadkill\', $post->ID ) )
return;
$onclick = "onclick=\\"return confirm(\'Rly delete?\');\\"";
$link = "<a " . $onclick. " href=\'" . wp_nonce_url( get_bloginfo(\'url\') . "/wordpress/wp-admin/post.php?action=delete&post=" . $post->ID, \'delete-post_\' . $post->ID) . "\'>" . \'Löschen\' . "</a>";
echo $before . $link . $after;
我只需在我的单个bkroadkill中调用这个函数。php
<?php wp_delete_post_link(); ?>
我已经用这个钩子试过了:
add_action(\'trashed_post\',\'my_trashed_post_handler\',10,1);
function my_trashed_post_handler($post_id) {
if (!is_admin()) {
wp_redirect(\'http://www.citizen-science.at/projekte/roadkill/ubersicht\');
exit;
}
}
但它没有任何效果。这只适用于标准岗位吗?我找不到挂钩的任何文档,除了
http://codex.wordpress.org/Plugin_API#Current_Hooks_For_Actions.
不管怎样,正确的方法是什么?
最合适的回答,由SO网友:Rarst 整理而成
用户实际上会转到链接,然后在帖子被删除后返回,而不是“仍在”页面。根据您的描述和快速查看代码,这可能是将用户发回的一行代码:
wp_redirect( add_query_arg(\'deleted\', 1, $sendback) );
因为目标是在内部过滤的
wp_redirect()
$location = apply_filters( \'wp_redirect\', $location, $status );
你有现成的
deleted
标记应该可以很容易地将用户重定向到其他地方,可能需要进行一些检查,以便不会干扰正常的管理操作。