#post #wordpress #save
#Публикация #wordpress #Сохранить
Вопрос:
Я говорю о «публикации», как в методе html, а не о сообщении в блоге. Это совпадение в терминологии, вероятно, является одной из причин, по которой я не могу найти то, что ищу.
У меня есть несколько страниц администратора, настроенных с формами, которые используются add_action('admin_post_something', 'my_function');
для обработки сохранения данных формы в базе данных. Все это работает великолепно.
Теперь у меня есть часть на стороне клиента, которая требует, чтобы пользователь вошел в систему для публикации данных, но не обязательно был администратором. admin_post_something
Перехват не сработает (возвращает страницу, которая не найдена), поскольку пользователь не является администратором. Это ожидаемое поведение.
Какое действие перехвата я должен использовать для обработки и хранения информации, поступающей с клиентской части моего сайта, и где должна быть расположена эта функция? Приветствуются примеры или ссылки на документацию.
Спасибо
Комментарии:
1. Итак, вы разрешаете своим пользователям, не являющимся администраторами, отправлять данные с использованием метода POST через интерфейс? Что вы делаете с данными, обновляете страницу или публикацию WordPress? или делать что-то еще? Конкретный используемый вами хук будет зависеть от того, что вы на самом деле делаете.
2. @henrywright Я создал простой плагин, который позволяет пользователям подписываться на действия во временных интервалах. Страницы администратора создают параметры для действий и временных интервалов, затем третья таблица базы данных связывает пользователей с указанными парами действий / временных интервалов. Таким образом, данные публикации будут связывать выбранные
activity_id
иtimeslot_id
с текущими пользователямиwp_users_id
в таблице. Будет вторая функция для удаления этой строки из таблицы, только если текущий идентификатор пользователя совпадает с сохраненным идентификатором строки.3. Таким образом, у вас где-то будет функция (возможно, в вашем плагине или, возможно, в functions.php ), который выполняет обработку данных POST. Внутри этой функции вы можете просто добавить условие, чтобы проверить, была ли отправлена форма. Например:
if ( isset( $_POST['your-hidden-field-name-in-your-form'] ) ) { // do something here because the form has been submitted }
4. @henrywright это имеет смысл. Не могли бы вы указать это в качестве ответа? Я дам вам некоторую похвалу.
5. Спасибо, я опубликовал это в качестве ответа.
Ответ №1:
Внутри вашей функции, которая обрабатывает данные POST, у вас может быть условная проверка, чтобы узнать, была ли отправлена форма. Например:
if ( isset( $_POST['a-hidden-field-name-in-your-form'] ) ) {
// do something here because the form has been submitted
}