Вставка элемента enclosure в WordPress RSS-ленте позволяет добавить вложенные медиафайлы, такие как аудио или видео, к посту или записи. Формат enclosure используется для указания источника медиаконтента, его длительности и типа файла.
Чтобы добавить enclosure в RSS-ленту WordPress, нужно внести изменения в файлы functions.php
и rss-functions.php
. Но прежде всего, необходимо создать пользовательское поле, в котором будет храниться информация о файле. Для этого добавьте следующий код в ваш файл functions.php
:
function add_custom_fields_to_rss() { if (get_post_mime_type() == 'audio/mpeg') { $file_url = wp_get_attachment_url(get_post_thumbnail_id()); $file_size = filesize(get_attached_file(get_post_thumbnail_id())); $file_type = get_post_mime_type(get_post_thumbnail_id()); echo '<enclosure url="' . $file_url . '" length="' . $file_size . '" type="' . $file_type . '" />' . PHP_EOL; } } add_action('rss2_item', 'add_custom_fields_to_rss'); add_action('rss_item', 'add_custom_fields_to_rss');
Этот код добавляет enclosure элемент только для аудио файлов типа audio/mpeg
, но вы можете изменить условия, чтобы соответствовать вашим потребностям.
Теперь нужно обновить файл wp-includes/rss-functions.php
. Найдите функцию create_enclosure
в этом файле и замените ее следующим кодом:
function create_enclosure($post_id) { $post_thumbnail_id = get_post_thumbnail_id($post_id); if (!$post_thumbnail_id) { return; } $upload_dir = wp_upload_dir(); $file_url = $upload_dir['baseurl'] . '/' . _wp_relative_upload_path(get_attached_file($post_thumbnail_id)); $file_path = $upload_dir['basedir'] . '/' . _wp_relative_upload_path(get_attached_file($post_thumbnail_id)); $file_size = filesize($file_path); $file_type = get_post_mime_type($post_thumbnail_id); echo '<enclosure url="' . $file_url . '" length="' . $file_size . '" type="' . $file_type . '" />' . PHP_EOL; }
Сохраните изменения и загрузите обновленные файлы на ваш сервер. Теперь все аудио файлы, указанные в поле post_thumbnail_id
у ваших записей, будут автоматически добавлены в RSS-ленту в виде enclosure элемента.
Обратите внимание, что вам может потребоваться настроить плагин подписки на RSS-ленту для того, чтобы он корректно отображал enclosure элемент в подписке.