在前台删除帖子后重定向

时间:2015-12-17 作者:public9nf

我使用以下链接删除wordpress前端的帖子:

<a href="<?php echo get_delete_post_link( $post->ID ) ?>">Delete Post</a>
这很好用。但在我删除了这篇文章之后,它只是显示了一个索引的空白页。php。我想将删除帖子的作者重定向到一个类别站点,如/post-archive。你知道我怎么做吗?

感谢您的帮助和问候。

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

我进一步了解了这个主题,发现这个解决方案非常适合我。

1将此代码添加到函数中。php:

// Delete post
function delete_post(){
    global $post;
    $deletepostlink= add_query_arg( \'frontend\', \'true\', get_delete_post_link( get_the_ID() ) );
    if (current_user_can(\'edit_post\', $post->ID)) {
        echo       \'<span><a class="post-delete-link" onclick="return confirm(\\\'¿Are you sure to delete?\\\')" href="\'.$deletepostlink.\'">Borrar</a></span>\';
    }
}

//Redirect after delete post in frontend
add_action(\'trashed_post\',\'trash_redirection_frontend\');
function trash_redirection_frontend($post_id) {
    if ( filter_input( INPUT_GET, \'frontend\', FILTER_VALIDATE_BOOLEAN ) ) {
        wp_redirect( get_option(\'siteurl\').\'/page-deleted-post\' );
        exit;
    }
}
2调用模板文件(single.php或其他文件)上的函数:

echo delete_post();

SO网友:birgire

有一种方法是在帖子被丢弃后修改重定向位置:

/**
 * Redirect to the home url after trashing a post on the front-end
 *
 * @link http://wordpress.stackexchange.com/a/212146/26350
 */
add_action( \'trashed_post\', function()
{
    add_filter( \'wp_redirect\', function( $location, $status )
    {
        if (   is_wpse_part_of_admin_url( $location ) 
            && 1 == get_wpse_query_arg( $location, \'trashed\' )
        )
            $location = esc_url( home_url() ); // Adjust to your needs!

        return $location;
    } );
} );
注意:在我们的帮助下,我们确保重定向位置不在后端is_wpse_part_of_admin_url() 助手函数。

有一些方便的功能,如add_query_arg()remove_query_arg() 但不是get_query_arg(). 下面是我们的助手函数:

/**
 * Get query argument from an url
 *
 * @uses wp_parse_str()
 * @param string $url 
 * @param string $arg
 * @return string|false
 */
function get_wpse_query_arg( $url, $arg )
{
    wp_parse_str( parse_url( $url, PHP_URL_QUERY ), $args );

    if( isset( $args[$arg] ) )
        return $args[$arg];

    return false;
}
下面是帮助函数,用于确定url是否为后端url:

/**
 * Check if the url starts with admin_url()
 *
 * @uses admin_url()
 * @param string $url 
 * @return boolean
 */
function is_wpse_part_of_admin_url( $url )
{
    return 0 === strpos( $url, admin_url() );
}

相关推荐

Front-End Post Submission

我正在尝试添加一个表单,用户可以从前端提交帖子。我正在学习本教程:http://wpshout。com/wordpress从前端提交帖子/我正在做的是添加this code 到我的一个页面模板。表单显示正常,但当我单击“提交”按钮时,它会显示“Page not found error“”许多评论者说这不起作用。谁能给我指出正确的方向吗?代码是否不完整?有缺陷吗?我做错什么了吗?谢谢Towfiq I。