
Делаем фид xml для турбо-страниц Яндекс на WordPress без плагинов
Что бы сделать для Яндекса Турбо-страницы в WordPress, выполняем простую инструкцию:
- Добавляем код в файл functions.php текущей темы WordPress:
<?php //turbo yandex
add_action('init', 'customRSS');
function customRSS(){
add_feed('feedturbo', 'customRSSFunc');
}
function customRSSFunc(){
get_template_part('rss', 'feedturbo');
}
?> - В папке с темой создаём файл rss-feedturbo.php и добавляем туда код:
<?php
$postCount = 5000; // кол-во записей в фиде
$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'); ?></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-feedturbo-category',true); ?></category>
<?php
$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> - Заходим в админку WordPress -> Настройки -> Постоянные ссылки -> нажимаем Сохранить ничего не меняя. Это нужно сделать что сформировался новый фид.
Если установлен Yoast SEO, то заходим в настройки плагина -> Отображение в поисковой выдаче -> нажимаем Сохранить. - Открываем фид для проверки по адресу https://ваш-сайт.com/feed/feedturbo (если выскочит ошибка “Namespace prefix turbo on content is not defined”, то ничего страшного…)
- Заходим в Яндекс Вебмастер -> Турбо-страницы -> Источники -> Добавляем фид и включаем
Этот способ быстрый, не нагружает сайт, легко модернизируется. Делитесь статьёй в соц. сетях 😉