Перейти до змісту

Оновлення дати допису в один клік

За підтримки:
Все автоновости киева на автомобильном информационном портале, а также авто события, тюнинг, автобизнес.

Уявімо, що потрібно змінити дату певного допису у блозі на WordPress, поставивши сьогоднішнє число. Можливо тому, що запис став неймовірно актуальним, а можливо для того, щоб просто поставити конкретний допис знов першим на блозі. В принципі, мотивація може бути різною, а для нас головне дія :-)

У такому випадку треба зайти в адмінку, на сторінку редагування допису і справа у стрічці "Опубліковано" терпеливо вводити нову дату та час публікації. Потім клацнути кнопку "Оновити". Все вірно? Ну звичайно, ви вже й самі це все знаєте! :-) Не для того я пишу цей пост, щоб повторювати давно відомі речі. А, навпаки, щоб поділитись новим і цікавим. Наприклад, поділюсь кнопкою, що зробить всю вище описану довгу операцію прямо у фронт-енді на сторінці допису і всього в один клік!

Ось код, що додасть цю "чарівну" кнопку на сайт:

ID;

    if (isset($_POST[$postid])){

    $data = array (
        'ID' => $postid,
        'post_date'	=> $current,
    );

    wp_update_post($data);

    echo '<span style="color: red;">Time updated!</span>';

    }
?>
<form name="timeedit" method="post" enctype="multipart/form-data" action="">
<input name="<?php echo $postid ?>" class="button" id="send-<?php echo $postid ?>" value="Update Time" type="submit">
</form>

УВАГА! Цей код повинен бути у циклі (loop)! Його можна вставляти у шаблон одиночного поста або архіва постів. Найкраще, одразу після заголовка.

Фільтр користувачів, для яких буде доступна дана кнопка, відбувається по можливості (capability). Я обрав можливість користувача постити html теги чи навіть js-скрипти (мають Адмін і Редактор). Для гостей і користувачів з іншими правами жодної кнопки показано не буде.

Гаразд. А чи можливий подібний функціонал у адмінці на сторінці всіх постів? Звісно! Для цього у файл functions.php вашої теми слід додати наступний код:

ID;

if (isset($_POST[$postid])){

$data = array (
    'ID' => $postid,
    'post_date'	=> $current,
);
wp_update_post($data);

echo '<span style="color: red;">Time updated!</span>';
}

echo '<form name="timeedit" method="post" enctype="multipart/form-data" action="">';
echo '<input name="'.$postid.'" class="button" id="send-'.$postid.'" value="Update Time" type="submit">';
echo '</form>';

}
}
?>

Тепер, на сторінці постів у адмінці для тих же користувачів (Адмін і Редактор) з'явиться нова колонка з кнопкою "Edit Time" навпроти кожного допису. Робить вона те ж саме - в один клік оновлює дату і час допису на поточні.