Как настроить автоматическое добавление новых записей в ленту RSS-канала WordPress?
Здравствуйте!
Я использую WordPress для своего сайта и мне нужно настроить автоматическое добавление новых записей в ленту RSS-канала. Я нашел несколько решений, но ни одно из них не работает должным образом.
В моем коде я использую функцию wp_insert_post() для добавления новых записей. Мне нужно, чтобы каждый раз, когда я добавляю новую запись, она автоматически появлялась в ленте RSS-канала.
$my_post = array(
'post_title' => 'Название записи',
'post_content' => 'Содержимое записи',
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array( 8,39 )
);
$post_id = wp_insert_post( $my_post );
Как я могу настроить автоматическое добавление новых записей в ленту RSS-канала WordPress с помощью данного кода? Или может быть, есть другой способ сделать это? Буду очень благодарен за помощь!
Заранее спасибо!
Ответы:
Чтобы настроить автоматическое добавление новых записей в ленту RSS-канала WordPress, вам необходимо использовать хук "publish_post". Этот хук срабатывает каждый раз, когда запись успешно публикуется.
В вашем коде, после функции wp_insert_post(), вы можете добавить следующий код, чтобы добавить новую запись в ленту RSS-канала:
// Получить полный URL канала RSS
$rss_url = get_bloginfo('rss2_url');
// Создать объект SimplePie для парсинга канала RSS
$rss = new SimplePie();
$rss->set_feed_url($rss_url);
$rss->init();
// Создать новый элемент записи
$feed_item = new SimplePie_Item();
$feed_item->set_title($my_post['post_title']);
$feed_item->set_permalink(get_permalink($post_id));
$feed_item->set_date( current_time('mysql') );
// Добавить элемент записи в ленту RSS
$rss->data['items'][] = $feed_item;
// Сохранить изменения в ленте RSS
$rss->save_feed();
// Очистить кэш ленты RSS
wp_cache_delete('feed','feed');
// Очистить кэш ленты RSS-канала
wp_cache_delete('rss','feed');
В этом коде мы используем класс SimplePie для работы с лентой RSS. Сначала мы получаем URL канала RSS с помощью функции get_bloginfo('rss2_url'). Затем мы создаем новый объект SimplePie и устанавливаем URL канала RSS с помощью функции set_feed_url(). После этого мы инициализируем объект SimplePie с помощью функции init().
После этого мы создаем новый элемент записи с помощью функции SimplePie_Item::set_title() для установки заголовка записи, SimplePie_Item::set_permalink() для установки ссылки на запись и SimplePie_Item::set_date() для установки даты записи. Затем мы добавляем этот элемент записи в ленту RSS с помощью прямого доступа к массиву данных ленты RSS "$rss->data['items'][]".
Наконец, мы сохраняем изменения в ленте RSS с помощью функции save_feed(), очищаем кэш ленты RSS с помощью функции wp_cache_delete('feed','feed') и очищаем кэш ленты RSS-канала с помощью функции wp_cache_delete('rss','feed').
После добавления этого кода в вашу функцию, каждый раз, когда вы добавляете новую запись, она будет автоматически появляться в ленте RSS-канала.
Надеюсь, это поможет вам! Если у вас возникнут еще вопросы, пожалуйста, не стесняйтесь спрашивать.
С наилучшими пожеланиями!