php 删除自定义文章类型并重定向到主页

y0u0uwnf  于 2023-05-05  发布在  PHP
关注(0)|答案(2)|浏览(100)

我使用get_delete_post_link从前端删除自定义帖子,但删除后我得到404页面。自定义帖子被删除后,如何重定向到主页?
我在functions.php中插入了以下代码:

function wp_delete_post_link($link = 'Delete Post', $before = '', $after = '') {
    global $post;
    $link = "<a href='" . wp_nonce_url( get_bloginfo('url') . "/wp-admin/post.php?action=delete&amp;post=" . 
    $post->ID, 'delete-post_' . $post->ID) . "'>".$link."</a>";
    echo $before . $link . $after;
}

在那之后,我创建了短代码来生成删除按钮:

function wpc_elementor_shortcode( $atts ) {
    wp_delete_post_link();
}
add_shortcode( 'my_shortcode', 'wpc_elementor_shortcode');

有没有办法改进这段代码,实现删除后的重定向?

zphenhs4

zphenhs41#

试试这个:

/**
 * template_redirect Action Hook.
 * Redirect users to home page
 * after deleting a custom post type post.
 */
function redirect_on_delete() {
    // Custom post type plural name or rewrite slug name.
    $custom_post_type = 'CUSTOM_POST_TYPE';

    $regex = "/" . $custom_post_type . ".*" . preg_quote(  "/?deleted=", "/" ) . "\d+" . "/i";

    if ( preg_match( $regex, $_SERVER["REQUEST_URI"] ) ) {
        \nocache_headers();
        if ( \wp_safe_redirect( esc_url( get_home_url() ) ) ) {
            exit;
        };
    }
}
add_action( 'template_redirect', 'redirect_on_delete', 10, 1 );
44u64gxh

44u64gxh2#

我尝试了许多代码片段,用于在删除自定义帖子后重定向,但没有一个有效。所以我尝试了另一种方法:将404页面重定向到我为编辑器角色用户构建的自定义前端编辑器 Jmeter 板。代码如下:

function editor_redirect_404() {
    global $wp_query;
    if ( $wp_query->is_404 ) {
      wp_redirect( home_url( '/dashboard/' ) );
      exit;
    }
}
add_action('template_redirect', 'editor_redirect_404', 1);

我不想让网站的访问者体验到这一点(他们有定期404页面),所以这个重定向只适用于当用户登录,并有编辑器的作用。这是通过使用WPCodeBox插件中的条件生成器来实现的。

相关问题