Вызывать функцию PHP только при отправке формы - PullRequest
0 голосов
/ 23 мая 2018

Я начинаю с того, что говорю: здесь нет php-сервера.

<form action="" method="POST" id="myForm" autocomplete="off">
    <textarea  name="newContent" class="form-control" rows="10"><?php the_content(); ?></textarea>
    <p class="read-more"><button type="button" class="btn btn-danger">Read More</button></p>
    <input id="update_content" type="submit" value="Update">
    <?php
        $post = array(
            'ID' => $id,
            'post_content' => $_POST['newContent']
        );
        wp_update_post($post, true);
    ?>
</form>

Теперь на странице, поэтому каждый раз, когда я загружаю ее, запускается wp_update_post($post, true);.

Какой самый простой способ запустить это при нажатии на <input id="update_content" type="submit" value="Update"> а не на каждой странице загрузки?

Ответы [ 3 ]

0 голосов
/ 23 мая 2018
Решение

@ епископа быстрое и простое, но я подумал, что я добавлю это:

$_SERVER['REQUEST_METHOD']

давайте определим метод запроса.

if($_SERVER['REQUEST_METHOD']=="POST")
{
 wp_update_post($post, true); 
}

Это возможно«правильный путь», и прошел бы, даже если тело сообщения пусто, хотя наши ответы функционально одинаковы

0 голосов
/ 23 мая 2018

Попробуйте это:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Put variables and function here
}
0 голосов
/ 23 мая 2018

Сначала дайте вашему вводу имя:

<input name="submit" value="Update">

Затем в вашем коде, предполагая PHP 7 +:

if ('Update' === ($_POST['submit'] ?? false)) {
    wp_update_post($post, true);
}

Как это работает: когда вы нажимаете кнопку типаотправить в браузере, браузер упаковывает именованные элементы ввода и отправляет их по проводам.Веб-сервер распаковывает HTTP-сообщение и отправляет их в PHP, что делает их доступными в ассоциативном массиве (он же словарь) с именем $_POST.(Или если метод GET, то $_GET).Затем вы можете проверить этот массив на наличие ожидаемых ключей и их значений.

Кроме того, вам не нужно строго называть свою кнопку.Вы также можете сделать:

if (count($_POST)) {
    ...
}

, который утверждает, что в проведенных данных есть хотя бы одна пара значений ключей.

Вы также можете рассмотреть возможность использования var_dump('<pre>', $_POST) в качестве диагностического пособия.

Наконец, мне неясно, откуда взялся ваш $id, но это тоже нужно правильно настроить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...