我在前端为博客帖子和自定义类型的帖子创建了一个删除按钮,删除后我会重定向到一个特定页面,我在google上四处查看,发现了所有类似的解决方案:
add_action(\'deleted_post\', \'my_trashed_post_handler\', 10);
function my_trashed_post_handler($post_id) {
wp_redirect( get_option(\'siteurl\') );
exit;
}
代码运行良好,但我不想更改后端的标准行为,所以我这样做了:
add_action(\'deleted_post\', \'woffice_trashed_post_handler\', 10);
function woffice_trashed_post_handler($post_id) {
if(!is_admin()) {
wp_redirect( get_option(\'siteurl\') );
exit;
}
}
这段代码不起作用,因为我发现如果我在前端删除一篇文章,那么返回值总是true。
要通过前端创建删除链接,我使用此功能:
get_delete_post_link(get_the_ID();
在我仅仅通过前端或特定链接/按钮删除帖子后,如何解决问题并重定向到特定页面?
UPDATE: 感谢zlatev回复,我能够触发它并避免is\\U管理问题,现在我又遇到了另一个非常奇怪的问题:
我创建了一篇新文章,打开它,然后单击fronend删除,我被重定向到博客列表页面(我的自定义edirect url)
该文章没有被删除,我希望该文章再次被删除,我再次单击frontend删除,我被重定向到同一页面。该文章在第二次被删除,我测试了很多次,总是在第二次被删除一次,我用这个创建了删除url,并且url始终是相同的:add_query_arg( \'origin\', \'fe-blog\', get_delete_post_link(get_the_ID(), \'\', true))
我用于rdirect的代码如下:add_action(\'deleted_post\', \'woffice_trashed_post_handler\');
function woffice_trashed_post_handler() {
if( isset( $_GET[\'origin\'] ) && ($_GET[\'origin\'] == \'fe-blog\' || $_GET[\'origin\'] == \'fe-wiki\' || $_GET[\'origin\'] == \'fe-project\') ) {
switch($_GET[\'origin\']){
case \'fe-blog\':
$blog_page = get_option( \'page_for_posts\' );
if(empty($blog_page)){
$pages = get_pages(array(
\'meta_key\' => \'_wp_page_template\',
\'meta_value\' => \'page-templates/blog.php\'
));
$blog_page = $pages[0]->ID;
}
//var_dump(get_permalink($blog_page));
//die();
wp_redirect( get_permalink($blog_page) );
break;
}
exit();
}
}
我用错钩子了?