Эта тема в продолжение
Скорректируйте меня пожалуйста, если не прав.
Чтобы узнать, какую рубрику хочет привязать автор к записи в рамках хука rcl_preview_post
делаю так: $post_string = implode($postdata['cats']['category']);
и выдает ID рубрики, хотя по сути на момент публикации это не совсем ID, а value из формы. Проблема (или нет) в том, что с консоли браузера можно поменять это значение вручную и система "съест".
В случае, если измененный ID не существует, то запись попадает в Uncategorized, однако в админке видно, что запись не связана ни с одной рубрикой.
Почему пока что для меня это сырой вариант: в связи с моей задачей "проверять уникальность заголовка записи в выбранной рубрике". Пользователь через консоль браузера может подменить ID рубрики и тут не поможет даже проверка на то, существует такая рубрика или нет. Ведь подменить он может на ID существующей рубрики.
Может быть есть иной вариант определить, какую таксономию реально собирается привязать пользователь к записи?
Рубрики у меня в виде селекта:
--
Извините, если для этого вопроса нужно было продолжить в первой теме. Не прочувствовал еще. Поскольку вроде бы логично, что вопрос отдельный.
Здравствуйте.
Я не представляю как можно этому помешать - любые значения из скрытых полей можно подменить. Только если например это не закодированные значения. но и тогда в основном по простому - base64 например их кодировать, а на стороне php возвращать в числа.
Но если человек умеет через f12 делать пакости - не проще ли тогда административно вопросы решать? Не пропускать такие записи, накладывать ограничения на учётку...
Спасибо. К размышлению далее.
Может быть стоит подключить к этому делу jQuery и давать дополнительную проверку типа такого let catIndex = $('select option:selected').index();
и сопоставлять с тем порядком, в каком рубрики указаны в настройках формы публикации в админке? Хотя, это тоже так себе.
Другой вариант, чтобы в value="X"
была генерируемая произвольная комбинация, непонятная с фронтенда. Это должно быть надежно. Да, в моем случае мне стоит этим заморочиться.
Если в настройках формы указаны определенные рубрики, то вы можете в своей функции сравнивать какие именно категории разрешены с той категорией что была передана. Для этого надо получить данные полей формы:
$formFields = new Rcl_Public_Form_Fields( array( 'post_type' => 'post', 'form_id' => 1 ) );
затем получите данные отдельного поля
$field = $formFields->get_field( 'taxonomy-category' );
и уже смотрите, что находится внутри $field
, если не ошибаюсь, перечень указанных ID терминов находится в
$field['values']