Как добавить событие jQuery OnClick к кнопке "Опубликовать" записи?

11 янв. 2013 г., 20:45:54
Просмотры: 4.36K
Голосов: 4

Я хочу добавить простое подтверждение к кнопке "Опубликовать", чтобы при нажатии клиентом этой кнопки появлялся запрос на подтверждение с вариантами "Да" или "Отмена", после чего запись либо публиковалась, либо нет.

Я новичок в WordPress... или, по крайней мере, я занимался только темой и ограниченным программированием плагинов. Я нашел код метабокса для кнопки "Опубликовать" в файле edit-form-advanced.php:

add_meta_box('submitdiv', __('Опубликовать'), 'post_submit_meta_box', null, 'side', 'core');

Но чтобы реализовать это, я подозреваю, что мне нужно добавить код jQuery в другом месте - предпочтительно в моей теме.

По причинам, связанным с сайтом, я не могу добавлять новые плагины в эту установку, поэтому любые изменения должны быть ограничены файлом functions.php моей темы.

2
Комментарии

Количество плагинов на сайте не имеет значения, важно то, что каждый плагин делает. Одно и то же решение, добавленное напрямую в вашу тему или через плагин, создает одинаковую нагрузку на ваш сайт.

Milo Milo
11 янв. 2013 г. 21:10:32

Да. Ну, я здесь не для того, чтобы обсуждать тонкости того, сколько плагинов что делают, мне просто очень интересно получить ответ на свой вопрос таким образом, чтобы обойти необходимость использования плагина для достижения моей цели. Я не против добавления кода в тему этого сайта... одного из сотен в моей мультисайтовой установке.

Lynn Lynn
11 янв. 2013 г. 21:56:15
Все ответы на вопрос 2
6

Вы можете подключиться к действиям в подвале записи (основано на этом ответе, не тестировалось):

add_action( 'admin_footer-post-new.php', 'wpse_80215_script' );
add_action( 'admin_footer-post.php', 'wpse_80215_script' );

function wpse_80215_script()
{
    if ( 'post' !== $GLOBALS['post_type'] )
        return;

    ?>
<script>
document.getElementById("publish").onclick = function() {
    if ( confirm( "Готовы?" ) )
        return true;

        return false;

}</script>
    <?php
}

Эти действия вызываются в wp-admin/admin-footer.php:

do_action( "admin_footer-" . $GLOBALS['hook_suffix'] );

Этот код можно использовать в плагине (предпочтительно) или в файле functions.php вашей темы.
Смотрите также:

11 янв. 2013 г. 20:57:15
Комментарии

Хорошо, я добавил указанный выше код в файл functions.php, но ничего не произошло. Правильно ли я понимаю, что js-скрипт должен быть в файле admin_footer? В этом случае я сначала попробовал добавить весь приведённый выше сниппет в functions.php...

Lynn Lynn
11 янв. 2013 г. 23:02:31

Да, просто добавьте всё в functions.php. Я только что протестировал - всё работает.

fuxia fuxia
11 янв. 2013 г. 23:06:48

Ещё один момент, который меня смущает... Я не вижу файлов в wp-admin с названиями admin_footer-post-new.php или admin_footer-post.php. Там только admin-footer.php, который выглядит довольно простым. Может ли это быть причиной того, что мои хуки не работают?

Lynn Lynn
11 янв. 2013 г. 23:25:25

@Lynn Смотрите моё обновление.

fuxia fuxia
11 янв. 2013 г. 23:29:33

Спасибо. Теперь я понял. Я помещал всё в функции, включая информативные ссылки.

Lynn Lynn
11 янв. 2013 г. 23:40:25

Всё работает, и я ради интереса протестировал это как плагин. Спасибо за помощь.

Lynn Lynn
12 янв. 2013 г. 00:19:44
Показать остальные 1 комментариев
1

Для этого есть плагин WordPress:

Confirm Publishing Actions — это плагин WordPress, который запрашивает подтверждение (или отмену) у пользователя при попытке отправить, опубликовать, обновить или удалить запись в WordPress.

11 янв. 2013 г. 20:49:57
Комментарии

К сожалению, я нахожусь в ситуации, когда не могу добавить плагин в мультисайтовую установку. Система уже сильно страдает от избытка плагинов, и это просто не вариант.

Lynn Lynn
11 янв. 2013 г. 20:55:29