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

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

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

Скачиваю файл functions
Добавляю новую функцию

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. Самый простой способ это сделать зайти в админку сайта вордпресс и перейти в Настройки>Постоянные ссылки и нажать кнопку «Сохранить изменения». На этом настройка заканчивается.
Перезаливаю файлы по новой
Перезапись файла .htaccess

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

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

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

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

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

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

Для того чтобы оценить запись, вы должны быть зарегистрированным пользователем сайта.
Загрузка...

Добавить комментарий

Ваш адрес email не будет опубликован.