Используется внешняя Простая библиотека Pie, встроенная в WordPress , для извлечения канала, получения URL-адреса изображения и создания нового сообщения для каждого элемента и сохранения URL-адреса изображения в качестве настраиваемого поля.
Чтобы активировать процесс, мы должны подключиться к wp_cron.Приведенный ниже код делает это ежедневно, но, вероятно, лучше делать это еженедельно, чтобы избежать дублирования.Возможно, произойдет некоторое перекрытие, поэтому для этого все еще нужен способ проверить, импортировали ли мы уже изображение
Сначала нам нужна функция для сохранения настраиваемого поля после создания записи.Этот раздел взят из другого ответа, который я нашел в WordPress Ответы .
Редактировать:
Это нужно обернуть в плагин, чтобы запланировать событие cron, и событие cron былоотсутствует действие, чтобы запустить его.
Редактировать:
Окончательная версия тестируется ниже, и она работает, но фид, который получает OP, использует относительные URL, поэтому необходимо добавить доменное имя где-то вкод вывода.
<?php
/*
Plugin Name: Fetch The Feed Image
Version: 0.1
Plugin URI: http://c3mdigital.com
Description: Sample plugin code to fetch feed image from rss and save it in a post
Author: Chris Olbekson
Author URI: http://c3mdigital.com
License: Unlicense For more information, please refer to <http://unlicense.org/>
*/
//Register the cron event on plugin activation and remove it on deactivation
register_activation_hook(__FILE__, 'c3m_activation_hook');
register_deactivation_hook(__FILE__, 'c3m_deactivation_hook');
add_action( 'c3m_scheduled_event', 'create_rss_feed_image_post');
function c3m_activation_hook() {
wp_schedule_event(time(), 'weekly', 'c3m_scheduled_event');
}
function c3m_deactivation_hook() {
wp_clear_scheduled_hook('c3m_scheduled_event');
}
function create_rss_feed_image_post() {
if(function_exists('fetch_feed')) {
include_once(ABSPATH . WPINC . '/feed.php'); // include the required file
$feed = fetch_feed('http://animelon.com/booru/rss/images'); // specify the source feed
}
foreach ($feed->get_items() as $item) :
// global $user_ID;
$new_post = array(
'post_title' => $item->get_title(),
'post_status' => 'published',
'post_date' => date('Y-m-d H:i:s'),
//'post_author' => $user_ID,
'post_type' => 'post',
'post_category' => array(0)
);
$post_id = wp_insert_post($new_post);
if ($enclosure = $item->get_enclosure() )
update_post_meta( $post_id, 'feed_image_url', $enclosure->get_link() );
endforeach;
}