Intereting Posts
Способ отображения медиа-библиотеки в интерфейсе Добавление настроек отображения вложений в пользовательском медиа рамке Как перечислять пустые категории также при перечислении подкатегорий Как изменить тип изображения для определенного размера? Что говорит против использования пользовательского login.php / register.php для wordpress? Иерархические таксономии в permalink вызывают 404 для субтерминального архива Неустранимая ошибка: допустимый размер памяти, когда после использования enqueue_script Как показать видео с сообщения на странице всех сообщений? При перемещении сайта WP, почему wp-admin перенаправляется на старый сайт? Запрошенный URL /get.php не найден на этом сервере Получите параметры боковой панели (before_widget, before_title и т. Д.) Из виджета Больше не добавлять элементы меню, связанные с сервером Как отключить поиск по URL-адресу и перейти на 404 страницу Обновление персонализированной мета-почты с помощью ajax Nonce продолжает терпеть неудачу

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

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

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