Intereting Posts
Как удалить ВСЕ комментарии из определенной категории в базе данных WordPress? Помощь в расширении пользовательского перетаскивания страниц на экране списка страниц администратора Как сделать короткую передачу кода Youtube Показывать только <li>, когда контент добавляется через настраиваемое поле Как сделать изображение видеоролика YouTube отображаемым в виде миниатюры в списке сообщений в блоге WordPress не может определить размер эскизов? Ошибка установки WordPress 3.1 Создать собственный размер эскиза на существующие сообщения Создание API для единого входа с сторонним сайтом Выбор типа пользовательского сообщения Сортировка wp_query суммой двух мета-полей Невозможно загрузить / установить любые темы WordPress Модифицировать детскую тему Twentyeleven CSS – Как изменить размер шрифта тела? Можно ли получить все сообщения с определенным значением для метаданных? Иерархия шаблонов о разбиении на страницы после front-page.php

Обновление постданных без создания дубликата на wp_insert_post из RSS-ленты

Я импортирую rss-канал из сайта списка вакансий и создаю пост для каждого листинга, который я импортирую с помощью wp_insert_post, чтобы сохранить данные и отобразить истекшие списки в архиве позже.

Мне нужно решение, чтобы wp_insert_post создавал дубликаты, пока он все еще обновляет сообщение, если определенные значения были обновлены в списке заданий из фида. В каждом листинге есть свой идентификатор, называемый AdIDID из фида.

Просто чтобы очистить, «если (! Get_page_by_title)» не будет делать трюк, когда много списков вакансий может иметь одинаковое название, так что решение заканчивается, исключая большинство списков. Все работает отлично с уже существующим кодом, мне просто нужно решение проблем, которые я объясняю. Просто покажите код, чтобы вы могли понять, что я здесь делаю. `

$post = array( 'post_content' => $item->description, 'post_date' => $item_date, 'post_title' => $item_title, 'post_status' => 'publish', 'post_type' => 'jobs', ); $id = wp_insert_post($post); $metdata = array( 'link' => $item->link, 'date' => $item ->date, 'company_logo_path' => $item->CompanyLogoPath, 'company_profile_text' => $item->CompanyProfileText, 

Solutions Collecting From Web of "Обновление постданных без создания дубликата на wp_insert_post из RSS-ленты"

Вы можете сохранить AdvertID своем сообщении и использовать его, чтобы проверить, было ли задание ранее импортировано.

 /** * Gets a job by AdvertId. * * @param string $advert_id The AdvertId. * @return WP_Post|bool The job or <false> if no job is found. */ function get_job_by_advert_id( $advert_id ) { $args = array( 'post_type' => 'jobs', 'meta_query' => array( 'key' => 'advert_id', 'value' => $advert_id, ), ); $posts = get_posts( $args ); if (empty($posts)) { return false; } return $posts[0]; } // Check if the job was imported before. $job = get_job_by_advert_id( $item->AdvertId ); if ( $job ) { // The job was imported before, update it. $args = array( 'ID' => $job->ID, 'post_content' => $item->description, 'post_date' => $item_date, 'post_title' => $item_title, ); $post_id = wp_update_post( $args ); } else { // The job is new. Insert it. $args = array( 'post_content' => $item->description, 'post_date' => $item_date, 'post_title' => $item_title, 'post_status' => 'publish', 'post_type' => 'jobs', ); $post_id = wp_insert_post($args); // Save the AdvertId for the next import. add_post_meta( $post_id, 'advert_id', $item->AdvertId, true); } 

Вы можете в конечном итоге установить уникальное «post_name» в ваших аргументах wp_insert_post $. Просто создайте функцию для ее создания, как это сделает генератор паролей.

Пример:

функция для создания post_name:

 function keygen($length=10) { $key = ''; list($usec, $sec) = explode(' ', microtime()); mt_srand((float) $sec + ((float) $usec * 100000)); $inputs = array_merge(range('z','a'),range(0,9),range('A','Z')); for($i=0; $i<$length; $i++) { $key .= $inputs{mt_rand(0,61)}; } return $key; } 

Для wp_insert_post ():

 $args = array( 'post_type' => $cpt_name, 'post_title'=> $list_name, 'post_content' => '', 'post_status' => 'publish', 'post_name' => keygen(12) ); $post_id = wp_insert_post($args); 

Конечно, установите свои собственные вары и условия по своему усмотрению.

Надеюсь, это даст вам направление о том, как добиться своей работы.