Beitrag vom Frontend mit Update bearbeiten

Lesezeit: 3 Minuten

Benutzer-Avatar
Steve Kim

Ich habe also den folgenden Code, um die Front-End-Bearbeitung für WordPress von hier zu ermöglichen: https://wordpress.stackexchange.com/questions/9912/front-end-post-editing-using-a-form

 <?php
    if ( 'POST' == $_SERVER['REQUEST_METHOD'] && ! empty($_POST['post_id']) && ! empty($_POST['post_title']) && isset($_POST['update_post_nonce']) && isset($_POST['postcontent']) )
    {
    $post_id   = $_POST['post_id'];
    $post_type = get_post_type($post_id);
    $capability = ( 'page' == $post_type ) ? 'edit_page' : 'edit_post';
    if ( current_user_can($capability, $post_id) && wp_verify_nonce( $_POST['update_post_nonce'], 'update_post_'. $post_id ) )
    {
        $post = array(
        'ID'             => esc_sql($post_id),
        'post_content'   => esc_sql($_POST['postcontent']),
        'post_title'     => esc_sql($_POST['post_title'])
    );
        wp_update_post($post);

        if ( isset($_POST['edit_test']) ) update_post_meta($post_id, 'edit_test', esc_sql($_POST['edit_test']) );
        if ( isset($_POST['edit_test2']) ) update_post_meta($post_id, 'edit_test2', esc_sql($_POST['edit_test2']) );
                        }
                        else
                        {
                            wp_die("You can't do that");
                        }
                    }
                ?>

    <form class="royal_page" role="form" method="post">                 
        <input type="hidden" name="post_id" value="<?php the_ID(); ?>" />
        <?php wp_nonce_field( 'update_post_'. get_the_ID(), 'update_post_nonce' ); ?>

        <p><label for="post_title">Title</label>
        <input type="text" id="post_title" name="post_title" value="<?php echo $post->post_title; ?>" /></p>

        <p><?php wp_editor( $post->post_content, 'postcontent' ); ?></p>

        <p><label for="post_title">Test</label>
        <?php $value = get_post_meta(get_the_ID(), 'edit_test', true); ?>
        <input type="text" id="edit_test" name="edit_test" value="<?php echo $value; ?>" /></p>

        <p><label for="post_title">Test 2</label>
        <?php $value = get_post_meta(get_the_ID(), 'edit_test2', true); ?>
        <input type="text" id="edit_test2" name="edit_test2" value="<?php echo $value; ?>" /></p>

    <input type="submit" id="submit" value="Update" />           
   </form>      

Das Bearbeiten des Beitrags selbst funktioniert also einwandfrei. Sobald die Änderung übermittelt wurde, wird die Seite aktualisiert.

Ich sehe die Änderung, die nach der Aktualisierung vorgenommen wurde. Das Bearbeitungsformular enthält jedoch nicht mehr den Inhalt und ich muss die Seite erneut aktualisieren, um sie anzuzeigen (Bild siehe unten).

Geben Sie hier die Bildbeschreibung ein

Weiß jemand, warum das so sein könnte und ob es eine Lösung gibt, wie man das beheben kann?

Vielen Dank!

Der Grund, warum Sie die Seite aktualisieren müssen, um aktualisierte Informationen zu erhalten, kann folgenden Grund haben:

Ihr Codefluss könnte in etwa so aussehen: 1. Sie haben oben eine Posts-Bedingung: <?php if(have_posts()): while(have_posts()): the_post(); ?>

  1. Dann haben Sie den Formularverarbeitungscode: if ( 'POST' == $_SERVER['REQUEST_METHOD'] && ! empty($_POST['post_id']) && ! empty($_POST['post_title']) && isset($_POST['update_post_nonce']) && isset($_POST['postcontent']) ) ...

  2. Dann haben Sie Form.


Das Ändern des Ablaufs in diesen kann hilfreich sein: 1. Setzen Sie den Formularverarbeitungscode oben ein: if ( 'POST' == $_SERVER['REQUEST_METHOD'] && ! empty($_POST['post_id']) && ! empty($_POST['post_title']) && isset($_POST['update_post_nonce']) && isset($_POST['postcontent']) ) ...

  1. Dann post Bedingungen setzen: <?php if(have_posts()): while(have_posts()): the_post(); ?>

  2. Form wie gewohnt eintragen.

1205410cookie-checkBeitrag vom Frontend mit Update bearbeiten

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy