Поддержка Проблемы и решения Хранение данных в wp_posts и wp_postmeta

Просмотр 15 ответов — с 1 по 15 (всего 145)
  • Модератор Юрий

    (@yube)

    Первоначально была мысль создавать собственную таблицу,

    Иногда такое, более трудоемкое в реализации, решение дает потом заметный выигрыш в производительности.

    или же после отправки формы в поле post_content записывать основной параметр, а все остальные

    Принципиальной разницы нет. Хотя если понадобится поиск или фильтрация по этому параметру, то лучше хранить его отдельно.

    Автор Dmitry Kohan

    (@dmay1989)

    @yube , спасибо огромное за ответ
    Ещё раз извините за беспокойство
    Вы писали:

    Принципиальной разницы нет. Хотя если понадобится поиск или фильтрация по этому параметру, то лучше хранить его отдельно.

    Подскажите ещё, пожалуйста, если хранить необходимые параметры отдельно в postmeta , у пользователя с ролью редактора будет возможность отредактировать их при необходимости из фронт-энда подобно редактированию основного контента записи, предоставляемого WP по умолчанию (поля post_title и post_content, подобно скрину http://prntscr.com/sc0mu4 ?
    и последнее — ведь не составит проблем после отправки формы в базе данных одновременно создавать записи в трех таблицах WP — wp_posts, wp_postmeta (ссылаясь на id данной добавленной записи) и term_relationships (также ссылаясь на id данной добавленной записи, есть ведь такая возможность ? ) ?

    Модератор Юрий

    (@yube)

    у пользователя с ролью редактора будет возможность отредактировать их при необходимости из фронт-энда

    У WP «из коробки» вообще нет редактирования с фронт-энда. Поэтому как сделаете, так и будет.

    ведь не составит проблем после отправки формы в базе данных одновременно создавать записи в трех таблицах WP

    Одновременно невозможно в принципе. Только последовательно.
    Надеюсь, Вы не собираетесь это делать вручную прямо в базе.

    Автор Dmitry Kohan

    (@dmay1989)

    @yube , по поводу записи в базу Вы написали:

    Надеюсь, Вы не собираетесь это делать вручную прямо в базе.

    Я планирую записывать в базу после отправки формы посредством класса базы данных wpdb, используя метод $wpdb->insert($table,$data)
    Это ведь верный способ ?

    Модератор Юрий

    (@yube)

    Это ведь верный способ ?

    Только для «инородных» таблиц.

    Для штатных сущностей крайне желательно пользоваться штатными функциями:
    https://developer.wordpress.org/reference/functions/wp_insert_post/
    https://developer.wordpress.org/reference/functions/add_post_meta/
    https://developer.wordpress.org/reference/functions/wp_set_post_categories/
    https://developer.wordpress.org/reference/functions/wp_set_post_terms/
    и т.п.

    Автор Dmitry Kohan

    (@dmay1989)

    Ещё раз спасибо
    @yube , подскажите ещё, пожалуйста, нужно ли предварительно регистрировать ключ произвольного поля meta_key при помощи функции register_meta() прежде чем добавлять данные в таблицу postmeta ? и если нужно, то регистрацию meta_key можно производить в файле functions.php соответствующей темы ?

    Модератор Юрий

    (@yube)

    Никогда не регистрировал, сразу делал update_post_meta.

    Автор Dmitry Kohan

    (@dmay1989)

    @yube , можно задать ещё один вопрос касательно записи в базу:
    форма ввода в моём случае находится на странице архива автора author.php, можно ведь разместить код, который принимает и записывает в базу данные введённые пользователем в форме, прямо в author.php, т.е. форму ввода прописать так:
    <form class="form-horizontal" action="author.php" method="post">
    или же в параметре action нужно прописывать скажем functions.php и соответствующий код обработки размещать там в functions.php?

    Модератор Юрий

    (@yube)

    Можно.
    Только ж не action="author.php", а action="".

    Автор Dmitry Kohan

    (@dmay1989)

    @yube , т.е. если код обработки формы находится в том же файле, что и сама форма, то в action можно ничего не прописывать ?

    Модератор Юрий

    (@yube)

    Дело не в файле, а в url. Если по тому же урлу, то можно '' (пустая строка). По спецификации html5 атрибут action вообще не обязателен. Однако я сталкивался с неадекватным поведением браузера без action.

    А файл может быть любой, в т.ч. тот, который вообще не подключался во время вывода формы.

    Автор Dmitry Kohan

    (@dmay1989)

    @yube , и если форм несколько и все находятся в author.php, и все они записывают в базу индивидуальные посты, т.е. пользователь сам решает какую форму из n заполнить, я ведь всё равно могу здесь в author.php разместить код обработки всех форм — и просто проверять какую из n форм отправил пользователь: скажем по индивидуальному параметру $_POST формы вот так:

    if (isset($_POST['form_1'])) {
    ...
    }

    и таким образом в определенный момент времени обрабатывать одну из форм ?

    Модератор Юрий

    (@yube)

    Ну да. Классика жанра 🙂

    Автор Dmitry Kohan

    (@dmay1989)

    Спасибо огромное! Буду пробовать

    Автор Dmitry Kohan

    (@dmay1989)

    @yube , прошу прощения, перечитал ещё раз Ваши последние ответы и вот:
    А файл может быть любой, в т.ч. тот, который вообще не подключался во время вывода формы.
    Но как тогда система «поймёт» из какого файла брать код обработки формы ?

Просмотр 15 ответов — с 1 по 15 (всего 145)
  • Тема «Хранение данных в wp_posts и wp_postmeta» закрыта для новых ответов.