Heim  >  Fragen und Antworten  >  Hauptteil

Entfernen Sie den benutzerdefinierten Beitragstyp und leiten Sie zur Startseite weiter

<p>Ich verwende <code>get_delete_post_link</code>, um einen benutzerdefinierten Beitrag aus dem Frontend zu löschen, aber nach dem Löschen erhalte ich eine 404-Seite. Wie leite ich nach dem Löschen eines benutzerdefinierten Beitrags zur Startseite weiter? </p> <p>Ich habe diesen Code in „functions.php“ eingefügt: </p> <pre class="brush:php;toolbar:false;">function wp_delete_post_link($link = 'Beitrag löschen', $before = '', $after = '') { globaler $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 . }</pre> <p>Dann habe ich einen Shortcode erstellt, um die Löschschaltfläche zu generieren: </p> <pre class="brush:php;toolbar:false;">function wpc_elementor_shortcode( $atts ) { wp_delete_post_link(); } add_shortcode( 'my_shortcode', 'wpc_elementor_shortcode');</pre> <p>Gibt es eine Möglichkeit, diesen Code so zu verbessern, dass er nach dem Löschen umgeleitet wird? </p>
P粉590428357P粉590428357431 Tage vor483

Antworte allen(2)Ich werde antworten

  • P粉020556231

    P粉0205562312023-09-05 00:57:37

    试试这个:

    /**
     * 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 );

    Antwort
    0
  • P粉609866533

    P粉6098665332023-09-05 00:40:08

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

    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 插件中的条件生成器来实现的。

    Antwort
    0
  • StornierenAntwort