GET_DELETE_POST_LINK后重定向

时间:2013-01-15 作者:Josh

我已经创建了一个带有前端提交的自定义帖子类型。我使用添加了删除链接get_delete_post_link ... 这很好用,只是在帖子被删除后,它给我带来了一个“找不到的页面”。

我想能够重定向到另一个页面后,帖子被删除。我知道我可以使用add_filter( \'get_delete_post_link\', \'some_function\' ) ... 但我不希望每次运行该函数时都触发它,以防我使用前端提交创建其他自定义帖子类型。

我知道wp_delete_post... 但我不能从链接中调用它。

最好的方法是什么?读了一些书后,找不到任何真正的解决方案。

谢谢

1 个回复
最合适的回答,由SO网友:fischi 整理而成

我将从delete post链接创建一个AJAX调用。

首先,注册AJAX函数:

add_action( \'wp_ajax_wpse_delete_post\', \'wpse_delete_post\' );
我不会向nopriv用户添加AJAX功能,但如果您希望站点的每个访问者(忽略功能)都能够删除帖子,那么您还必须添加以下内容:

add_action( \'wp_ajax_nopriv_wpse_delete_post\', \'wpse_delete_post\' );
接下来要做的是定义回调函数:

function wpse_delete_post() {

    // be sure to add all the security you need, so that no post gets deleted by accident or malicious intent
    $postid = intval( $_POST[\'post_id\'] );
    // also define what you want your AJAX message to return
    if ( wp_delete_post( $postid ) === false ) {
        echo "fail";
    } else {
        echo "success";
    }

    die(); // needed to function properly

}
最后一步是从链接调用AJAX。让我们假设您的链接上有可用的ID,只是为了让事情更简单:

<a href="#" id="POSTID" class="ajax_delete_post">delete post</a>
将以下Javascript添加到函数中:

jQuery(document).ready(function($){

    $(".ajax_delete_post").click( function(){
        var data =  {
            action: \'wpse_delete_post\',
            post_id: $(this).val("id")
        };
        $.post(ajaxurl, data, function(response) {
            console.log(response);
        });

    });

}); 
一定要有ajaxurl 定义好了,你应该准备好了。

结束

相关推荐

WP_REDIRECT和搜索引擎机器人

我有一些网页和类别,你必须在有权访问的血液。我正在使用wp\\u重定向将任何未登录的人发送到首页,如果他们试图打开这些页面。阻止任何搜索机器人为这些页面编制索引就足够了吗?