Есть ли плагин проверки введенных данных для Wordpress?
Добрый день!
Подскажите, пожалуйста, как проще всего реализовать проверку введенных данных (номер документа) с выводом результата на страницу определенного текста в зависимости от того есть ли такой документ в базе или нет.
Я так понял, что возможно проще всего проверять значение в массиве через функцию in_array, но php не знаю и как это реализовать в WP тоже, к сожалению.
Игорь Воротнёв, физически может нигде не храниться, сам документ не нужен. Нужен только его номер вида "03-123124". Номера можно сложить в какой-то файл или массив или назвать таким образом категории или какие-то поля в WP, в общем можно привязать к чему угодно. Главное есть такой набор цифр или нет. И вывод текста есть или нет.
Алексей, вы все еще не улавливаете суть уточнения. Где нужно выводить или не выводить текст? На странице? На записи? На архиве? На главной? В виджете? В меню? В профайле пользователя? В админке? Это первый момент. В зависимости от ответа на этот вопрос, можно понимать где эти ваши номера лучше всего хранить. А дальше нужно будет понять что с этими номерами делать - проверять есть ли эти циферки в базе, проверять только наличие, только формат или конкретные значения и тд. В общем, более подробно опишите что такое эти ваши документы, что за задачу вы пытаетесь решить.
Вывод необходим на html-странице вордпресса. В самом простом виде это можно охарактеризовать как проверку валидации сертификата или серийного номера. Нужно поле для ввода цифр и кнопка "проверить сертификат", по нажатию которой на страницу выводится текст о том, что сертификат валиден или не валиден. Т.е. нужна еще возможность любым способом добавлять новые валидные номера в список или файл, в котором будет проверяться наличие/отсутствие номера.
Алексей, вот это уже совсем другое дело. Задача проясняется :)
Для начала должен вас огорчить - одним каким-то кусочком кода на Тостере тут не обойтись. Готовым плагином где-нибудь на wordpress.org тоже вряд ли. Это полноценное задание для фриланса, потому что понадобится:
1. Создать хранилище номеров сертификатов (отдельная таблица в БД, custom post type, файл - это уже вариации на тему)
2. Написать АПИ-код для работы с этим хранилищем (он же CRUD - добавить номер, удалить, изменить, получить, а также вариации для фильтрации / поиска и тд)
3. Написать UI в админке для работы с номерами в этом хранилище
4. Сделать форму на фронтенде сайта, в которую будут вводить номера сертификатов
5. Написать обработчик формы, который будет получать введенный номер сертификата и проверять его наличие в хранилище (п.1) с помощью АПИ-кода (п.2)
В зависимости от выбора типа хранилища и требований/пожеланий к UI в админке для управления этими номерами, объем работы будет варьироваться. Но он в любом случае существенно превышает возможности Тостера.
Делаете запрос в базу через WP_Query, поищите тут как это сделать под Ваш случай: https://wp-kama.ru/function/wp_query
Просто делаете проверку, есть в результатах запроса записи или нет.
Игорь Воротнёв, так wp_query работает с чем угодно, если искомые данные есть у какой-то записи, хоть в мета, хоть в таксономиях или терминах, то надо только правильно сформировать wp_query, по ссылке выше есть все для этого.
Dima Polos, Спасибо, мне можете не объяснять что к чему, я по WP_Query диссертацию могу с закрытыми глазами писать. А вот сами внимательнее почитали бы. WP_Query работает только и исключительно с запросами в таблицу wp_posts, для получения записей любого типа (post, page, attachment, custom post type и тд). Да, он умеет делать выборку по данным из связанных таблиц (wp_postmeta, wp_term_relationships), но только выборку все тех же записей разных типов из wp_posts. С данными из таблицы wp_options он не работает совершенно никак. Так же как и с данными из произвольных таблиц - для этого есть $wpdb.
В общем, первым делом нужно понимать что у автора есть "документ", где он хранится. И только тогда можем советовать ему куда копать.
Игорь Воротнёв, я согласен с Вашим подходом, что Вы все уточнили у автора вопроса. Да, я прочитал уже и понял, пусть разбирается. Если бы нужные данные были у записей, то мой вариант подошел бы. Тут ведь как бывает, как вопрос задашь такой ответ и получишь. Я ведь тоже не чушь написал) Напишите свой ответ. Мой ответ поможет, если данные связаны с постом.
Dima Polos, Посмотрите комментарии к самому вопросу. Там вполне на выходе может быть и custom post type, тогда ваш ответ действительно пригодится. Но там у автора целую подсистему писать надо - как говорится, "все не так однозначно" :) Вот поэтому я и пытаюсь всегда выяснить суть задачи. Чаще всего получается, что там что-то совершенно другое надо человеку.
Алексей, если не сложно каждый документ добавить как запись в wp, то я бы так и сделал, потом как в ответе описал делал все. Но, id wp генерирует сам, лучше просто создайте свое кастомное поле для записи и туда вбивайте нужный Вам номер документа.