WordPress

php — Uzyskaj wartość przycisku przesyłania w niestandardowym typie postu

  • 4 grudnia, 2017
  • 3 min read
php — Uzyskaj wartość przycisku przesyłania w niestandardowym typie postu


Próbuję stworzyć wtyczkę quizu. Korzystając z niestandardowego typu postu, stworzyłem meta-box, który zawiera następującą tabelę formularza.

<table class="form-table">
        <tbody>
            <tr>
                <th>
                    <label for="quiz_type">Quiz Type</label>
                </th>
                <td>
                    <select name="quiz_data[quiz_type]" id="quiz_type">
                        <option value="trivia">Trivia</option>
                        <option selected="selected" value="personality">Personality</option>
                    </select>
                    <br>
                    <span class="description">Choose the type of quiz.</span>
                </td>
            </tr>
            <tr>
                <th>
                    <label for="quiz_data[questions][1][question]">Question</label>
                </th>
                <td>
                    <input type="text" name="quiz_data[questions][1][question]" id="quiz_data[questions][1][question]" value="fffffff"
                        size="75">
                    <br>
                    <span class="description">What is the question.</span>
                </td>
            </tr>
            <tr>
                <th>
                    <label for="quiz_data[questions][1][answers][1][answer]">Answer</label>
                </th>
                <td>
                    <input type="text" name="quiz_data[questions][1][answers][1][answer]" id="quiz_data[questions][1][answers][1][answer]"
                        value="dfdfds" size="30">
                </td>
                <th>
                    <label for="quiz_data[questions][1][answers][1][is_correct]">Is Correct?</label>
                </th>
                <td>
                    <input type="checkbox" name="quiz_data[questions][1][answers][1][is_correct]" id="quiz_data[questions][1][answers][1][is_correct]">
                </td>
            </tr>
            <tr>
                <th></th>
                <td>
                    <button class="add-answer button-secondary" id="add_new_answer" name="add_new_answer" type="submit" formmethod="post"
                        value="quiz_data[questions][1][answers][2][answer]">Add Answer</button>
                </td>
            </tr>
            <tr>
                <th></th>
                <td>
                    <button class="add-question button-primary" name="add_new_question" type="submit" value="">Add Question</button>
                </td>
            </tr>
        </tbody>
    </table>

Dane wejściowe są zapisywane jako tablica w metadanych postu. Mogę z powodzeniem zapisywać wprowadzone dane po naciśnięciu dowolnego przycisku, a wartości są przywoływane po załadowaniu edytora. Mam problem z dodaniem nowego pola wprowadzania, bez javascript, po naciśnięciu odpowiednich przycisków.

Warto przeczytać!  Jak powtórzyć kod PHP w odmianie produktu WooCommerce?

Pomyślałem, że przy powyższym znaczniku $_POST[’add_new_answer] zostanie ustawiony po kliknięciu przycisku „Dodaj odpowiedź”, ale tak nie jest.

Jak uzyskać wartość tego przycisku po kliknięciu go przy użyciu PHP?

Oto, czego próbuję w tej chwili:

if ( isset( $_POST['quiz_data'] ) || isset( $_POST['add_new_answer'] )  || isset($_POST['add_new_question'] ) ) {

            if ( isset( $_POST['quiz_data'] ) ){
                $updated_quiz_data = $_POST['quiz_data'];
            }

            if ( isset( $_POST['add_new_answer'] ) ){
                $updated_quiz_data = array_merge( $updated_quiz_data, $_POST['add_new_answer'] );
            }

            if ( isset( $_POST['add-new-question'] ) ){
                $updated_quiz_data = array_merge( $updated_quiz_data, $_POST['add-new-answer'] );
            }

            // Update the post meta data with the updated quiz
            update_post_meta( $quiz_id, 'quiz_data', $updated_quiz_data );
        }


Źródło