madina45SA 23.04.2023 11:18

Как настроить автоматическое добавление новых записей в ленту 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 с помощью данного кода? Или может быть, есть другой способ сделать это? Буду очень благодарен за помощь!

Заранее спасибо!

Ответы:

variantajulia40classy 23.04.2023 11:27

Чтобы настроить автоматическое добавление новых записей в ленту 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-канала.

Надеюсь, это поможет вам! Если у вас возникнут еще вопросы, пожалуйста, не стесняйтесь спрашивать.

С наилучшими пожеланиями!


Добавить ответ