Хранение данных в wp_posts и wp_postmeta
-
Доброго дня !
Подскажите, пожалуйста, как верно организовать хранение данных, получаемых из формы ввода пользователем, содержащей 6-8 полей ? (Соответственно каждая запись будет иметь 6-8 параметров)
Первоначально была мысль создавать собственную таблицу, но понимание множества уже имеющихся в WP средств и методов работы с таблицамиwp_posts
иwp_postmeta
подсказывает актуальность использования данных таблиц. Если предпочтительнее использовать таблицыwp_posts
иwp_postmeta
, то как верно организовать хранение данных: куда записывать данные 6-8 параметров — в поле post_content добавляемой записи таблицыwp_posts
? или же после отправки формы в поле post_content записывать основной параметр, а все остальные (второстепенные) параметры записывать в таблицуpostmeta
как метаданные после создания соответствующей записи в таблицеposts
?Наведите на верную мысль
Заранее благодарен за любую помощь
-
Первоначально была мысль создавать собственную таблицу,
Иногда такое, более трудоемкое в реализации, решение дает потом заметный выигрыш в производительности.
или же после отправки формы в поле post_content записывать основной параметр, а все остальные
Принципиальной разницы нет. Хотя если понадобится поиск или фильтрация по этому параметру, то лучше хранить его отдельно.
@yube , спасибо огромное за ответ
Ещё раз извините за беспокойство
Вы писали:Принципиальной разницы нет. Хотя если понадобится поиск или фильтрация по этому параметру, то лучше хранить его отдельно.
Подскажите ещё, пожалуйста, если хранить необходимые параметры отдельно в
postmeta
, у пользователя с ролью редактора будет возможность отредактировать их при необходимости из фронт-энда подобно редактированию основного контента записи, предоставляемого WP по умолчанию (поля post_title и post_content, подобно скрину http://prntscr.com/sc0mu4 ?
и последнее — ведь не составит проблем после отправки формы в базе данных одновременно создавать записи в трех таблицах WP —wp_posts
,wp_postmeta
(ссылаясь на id данной добавленной записи) иterm_relationships
(также ссылаясь на id данной добавленной записи, есть ведь такая возможность ? ) ?у пользователя с ролью редактора будет возможность отредактировать их при необходимости из фронт-энда
У WP «из коробки» вообще нет редактирования с фронт-энда. Поэтому как сделаете, так и будет.
ведь не составит проблем после отправки формы в базе данных одновременно создавать записи в трех таблицах WP
Одновременно невозможно в принципе. Только последовательно.
Надеюсь, Вы не собираетесь это делать вручную прямо в базе.@yube , по поводу записи в базу Вы написали:
Надеюсь, Вы не собираетесь это делать вручную прямо в базе.
Я планирую записывать в базу после отправки формы посредством класса базы данных wpdb, используя метод
$wpdb->insert($table,$data)
Это ведь верный способ ?Ещё раз спасибо
@yube , подскажите ещё, пожалуйста, нужно ли предварительно регистрировать ключ произвольного поля meta_key при помощи функцииregister_meta()
прежде чем добавлять данные в таблицуpostmeta
? и если нужно, то регистрациюmeta_key
можно производить в файле functions.php соответствующей темы ?Никогда не регистрировал, сразу делал update_post_meta.
@yube , можно задать ещё один вопрос касательно записи в базу:
форма ввода в моём случае находится на странице архива автора author.php, можно ведь разместить код, который принимает и записывает в базу данные введённые пользователем в форме, прямо в author.php, т.е. форму ввода прописать так:
<form class="form-horizontal" action="author.php" method="post">
или же в параметре action нужно прописывать скажем functions.php и соответствующий код обработки размещать там в functions.php?Можно.
Только ж неaction="author.php"
, аaction=""
.@yube , т.е. если код обработки формы находится в том же файле, что и сама форма, то в action можно ничего не прописывать ?
Дело не в файле, а в url. Если по тому же урлу, то можно
''
(пустая строка). По спецификации html5 атрибут action вообще не обязателен. Однако я сталкивался с неадекватным поведением браузера без action.А файл может быть любой, в т.ч. тот, который вообще не подключался во время вывода формы.
@yube , и если форм несколько и все находятся в author.php, и все они записывают в базу индивидуальные посты, т.е. пользователь сам решает какую форму из n заполнить, я ведь всё равно могу здесь в author.php разместить код обработки всех форм — и просто проверять какую из n форм отправил пользователь: скажем по индивидуальному параметру $_POST формы вот так:
if (isset($_POST['form_1'])) { ... }
и таким образом в определенный момент времени обрабатывать одну из форм ?
Ну да. Классика жанра 🙂
Спасибо огромное! Буду пробовать
@yube , прошу прощения, перечитал ещё раз Ваши последние ответы и вот:
А файл может быть любой, в т.ч. тот, который вообще не подключался во время вывода формы.
Но как тогда система «поймёт» из какого файла брать код обработки формы ?
- Тема «Хранение данных в wp_posts и wp_postmeta» закрыта для новых ответов.