Публикация данных от пользователя, не являющегося администратором, в WordPress

#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 
}