Intereting Posts
Отслеживайте акции социальных сетей и показывайте их по почте Как я могу остановить крюк от нарушения функции входа / выхода из системы? Как добавить короткий код в тег HTML-изображения Как может быть условный тег шаблона на основе основного цикла во вторичном цикле с новым WP_Query (), используя get_template_part () get_pages и number – нет вывода; нет ошибок; Использование дополнительных настраиваемых полей для создания слайдера на странице Поддержка клиентов: TinyMCE перестала работать (на некоторых компьютерах) Заголовок рубрики Need Category для ссылки на список категорий Неправильный идентификатор Письма с электронной почтой Cron Простой почтовый ящик в базе данных WooCommerce: Webhook отключен самостоятельно Пользовательская таксономия как раскрывающийся список Ограничьте количество сообщений из определенной категории на index.php Пользовательский запрос num_rows возвращает неправильную сумму

Обновление постданных без создания дубликата на 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); 

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

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