Все своими руками

Лента RSS для турбо-страниц в WordPress

С появлением в панели вебмастера Яндекс новой функции Турбо страницы для меня, как для владельца блога на WordPress добавились новые хлопоты, нужно создать дополнительную RSS ленту с специальной разметкой. Собравшись с силами, что опять что то на блоге нужно менять, я принялся искать нужную информацию. Сейчас я опишу вместе с картинками как добавить на свой блог WordPress новый фид.

Первым делом нужно обозначится в WordPress указав, что появится новая лента. Для этого нужно зайти на сервер хостинга и отредактировать файл functions.php . Для данной операции удобно пользоваться клиентом FTP, я пользуюсь FileZilla.  Скачиваю файл, открываю его с помощью приложения Notepad++ и перед закрытым тегом вставляю несколько строк функции


add_action('init', 'customRSS');
function customRSS(){ add_feed('newfeed', 'customRSSFunc'); }
function customRSSFunc(){ get_template_part('rss', 'newfeed'); }

newfeed это название нового фида который в дальнейшем будет доступен по адресу https://rustaste.ru/feed/newfeed. Это название выбирается произвольно и никак не влияет на работу самого фида

Следующий шаг это добавить сам файл фида в котором будет прописана разметка и все необходимые данные.
С помощью Notepad++ создаю новый файл rss-newfeed.php и вставляю этот код

<?php
$postCount = 50; // количество записей для отображения в фиде
$posts = query_posts('showposts=' . $postCount);
header('Content-Type: '.feed_content_type('rss-http').'; charset='.get_option('blog_charset'), true);
echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>';
?>
<rss version="2.0"
        xmlns:content="http://purl.org/rss/1.0/modules/content/"
        xmlns:wfw="http://wellformedweb.org/CommentAPI/"
        xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:media="http://search.yahoo.com/mrss/"
        xmlns:atom="http://www.w3.org/2005/Atom"
        xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
        xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
        <?php do_action('rss2_ns'); ?>>
<channel>
        <title><?php bloginfo_rss('name'); ?>.com</title>
        <link><?php bloginfo_rss('url') ?></link>
        <description><?php bloginfo_rss('description') ?></description>
        <language>ru</language>
        <?php do_action('rss2_head'); ?>
        <?php while(have_posts()) : the_post(); ?>	
                <item turbo="true">
                        <title><?php the_title_rss(); ?></title>
                        <link><?php the_permalink_rss(); ?></link>
                        <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate>
            <media:rating scheme="urn:simple"><?php echo get_post_meta($post->ID,'wpcf-adult',true); ?></media:rating>
                        <author><?php the_author(); ?></author>
            <category><?php echo get_post_meta($post->ID,'wpcf-tutbofeed-category',true); ?></category>
            <?
               $gallery = get_attached_media( 'image',$post );
               foreach( $gallery as $image_url ) {
                echo '<enclosure url="' . $image_url->guid . '" type="image/jpeg"/>
                ';
              }
            ?>
            
                        <description><![CDATA[<?php echo get_the_excerpt(); ?>]]></description>
                        <turbo:content><![CDATA[
            <?php 
               $content=get_post_field('post_content', $post->ID);
               $pattern = '/(<img([^>]*)>)/i';
               $replacement = '<figure>$1<figcaption>
              '.get_the_title().'
              </figcaption>
              </figure>';
 
               $content = preg_replace( $pattern, $replacement, $content );
               echo $content;
            ?>]]></turbo:content>
                        <?php rss_enclosure(); ?>
                        <?php do_action('rss2_item'); ?>
                </item>
        <?php endwhile; ?>
</channel>
</rss>

Теперь остается дело за малым скопировать оба файла в папку с темой и обновить файл .htaccess. Самый простой способ это сделать зайти в админку сайта вордпресс и перейти в Настройки>Постоянные ссылки и нажать кнопку «Сохранить изменения». На этом настройка заканчивается.

Так же что бы избежать этой волокиты можно воспользоваться плагином Yandex.News Feed by Teplitsa.

Если нет желания вникать в рутину PHP и писать код в ручную, посмотрите статью Турбо лента с помощью плагина WordPress

Для тех кто не в курсе что за турбо страницы и для чего они нужны читайте статью  турбо страницы Яндекс

Похожее по теме видео с YouToBe

Создавая свой новый фид я руководствовался инструкцией с сайта GitJournal спасибо автору

С ув Эдуард Орлов