Intereting Posts
Как обновить пользовательский заголовок сообщения из front-end формы с использованием полей ACF? wp_get_attachment_url с конкретным image_size? Удалить сообщение из последних сообщений через месяц только с определенным тегом Как я использую термины таксономии на основе терминов, которые они используют вместе? Изменение URL-адреса веб-сайта в корневой папке Заказать пользователей по последнему слову фамилии Как настроить теги и списки категорий для показа вступительного контента? Отправка клиенту электронной почты со ссылкой на полосу для оплаты Выделите объявления на несколько секунд post_mime_types Фильтр не работает в режиме списка AJAX загружает больше сообщений, не используя правильную категорию, и повторяет те же самые сообщения Обновление метаданных пользователей с помощью ajax get_template_directory_uri () в дочерней теме, указывающей на дочернюю тему Если в родительской категории Как проверить, разрешена или активна регистрация пользователя?

Перенос старых сообщений в новый wp, как экстраполяция информации из тела сообщения в пользовательские поля?

Мне нужно перенести некоторую информацию, которая хранится в теле сообщения (например, «цена: 200 $»), экстраполировать их как-то и поместить в пользовательские поля. как это сделать?

В блоге рассказывается о ресторанах, а местоположение и цены написаны в теле сообщений, мне нужно, чтобы они были в настраиваемых полях, поэтому я могу выполнять поиск по ним.

Solutions Collecting From Web of "Перенос старых сообщений в новый wp, как экстраполяция информации из тела сообщения в пользовательские поля?"

Короткий ответ заключается в том, что вы перебираете все ваши сообщения и используете (возможно) preg_match для извлечения информации.

Долгий ответ заключается в том, что это может быть довольно сложно, в зависимости от того, насколько совместим ваш ввод данных. Вот пример:

 global $wpdb; $sql = "SELECT ID,post_content FROM {$wpdb->posts}"; $allp = $wpdb->get_results($sql); foreach ($allp as $p) { // Deal with price $pat = '/price:[0-9]+\$/'; $price = preg_match($pat,$p->post_content,$matches); if (!empty($matches[0])) { list($key,$value) = explode(':',$matches[0]); update_post_meta($p->ID, $key, $value, $value); $new_content = preg_replace($pat,'',$p->post_content); // var_dump($new_content); } // end of price // update content if needed if (!empty($new_content)) { $post = array( 'ID' => $p->ID, 'post_content' => $new_content ); wp_update_post($post); } } 

Это преобразует данные о цене, которые вы указали выше – цена: 200 $ – и помещаете ее в мета-поле ( *_postmeta ) под ключом «цена» со значением «200 $». Я бы рекомендовал не включать значение $ в значение, чтобы вы могли сортировать численно, если захотите. Здесь задается несколько вопросов о том, как сортировать буквенно-цифровые данные численно, и вы не можете. Вам нужно решить это, поскольку данные поступают в базу данных.

Вам понадобится аналогичное регулярное выражение для каждого из битов информации, которую вы хотите вывести из post_content .

Будь очень осторожен. Легко получить правильное выражение, и нет «отмены». Работайте на сервере разработки с копируемой и одноразовой базой данных, пока не узнаете, что у вас все в порядке.

Справка:

http://php.net/manual/en/function.preg-match.php
http://www.php.net/manual/en/function.preg-replace.php
http://codex.wordpress.org/Function_Reference/update_post_meta
http://codex.wordpress.org/Function_Reference/wp_update_post