RSS for Yandex Turbo - Version 1.22

Version Description

  • SEO- .
  • notice "Undefined index: template-post" .
  • mp4- - ( ).
  • , (WordPress ).
Download this release

Release Info

Developer Flector
Plugin Icon 128x128 RSS for Yandex Turbo
Version 1.22
Comparing to
See all releases

Code changes from version 1.21 to 1.22

Files changed (3) hide show
  1. img/video.png +0 -0
  2. readme.txt +25 -1
  3. rss-for-yandex-turbo.php +41 -30
img/video.png ADDED
Binary file
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: yandex, turbo, yandex turbo, rss, feed
5
  Requires at least: 4.4
6
  Tested up to: 5.1
7
  Requires PHP: 5.3
8
- Stable tag: 1.21
9
 
10
  Создание RSS-ленты для сервиса Яндекс.Турбо.
11
 
@@ -327,6 +327,23 @@ function ct_get_steps() {
327
 
328
  Атрибут `alt` был заменен на `figcaption` из-за настроек плагина (учтите, что результат вывода вашего шаблона будет потом обработан фильтрами плагина).
329
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
330
  == Screenshots ==
331
 
332
  1. Пример добавленных RSS-лент в Яндекс.Вебмастере.
@@ -335,6 +352,13 @@ function ct_get_steps() {
335
 
336
  == Changelog ==
337
 
 
 
 
 
 
 
 
338
  = 1.21 =
339
 
340
  * из заголовка и описания сайта теперь удаляется html-разметка.
5
  Requires at least: 4.4
6
  Tested up to: 5.1
7
  Requires PHP: 5.3
8
+ Stable tag: 1.22
9
 
10
  Создание RSS-ленты для сервиса Яндекс.Турбо.
11
 
327
 
328
  Атрибут `alt` был заменен на `figcaption` из-за настроек плагина (учтите, что результат вывода вашего шаблона будет потом обработан фильтрами плагина).
329
 
330
+ = У меня относительные ссылки на изображения, что делать? =
331
+
332
+ Можно использовать код:
333
+
334
+ `function yturbo_replace_src_links($content) {
335
+
336
+ $pattern = '/src="\/(.*?)"/i';
337
+ $replacement = 'src="' . get_bloginfo('url') . '/$1"';
338
+ $content = preg_replace($pattern, $replacement, $content);
339
+
340
+ return $content;
341
+ }
342
+ add_filter('yturbo_the_content', 'yturbo_replace_src_links'); `
343
+
344
+ Этот код заменит все относительные ссылки на абсолютные.
345
+
346
+
347
  == Screenshots ==
348
 
349
  1. Пример добавленных RSS-лент в Яндекс.Вебмастере.
352
 
353
  == Changelog ==
354
 
355
+ = 1.22 =
356
+
357
+ * исправлены заголовки SEO-плагинов для произвольных типов записей.
358
+ * исправлен notice по поводу "Undefined index: template-post" в метабоксе при редактировании записи.
359
+ * для mp4-видео теперь выводится картинка-заглушка (яндекс без нее отказывается выводить видео).
360
+ * исправлены регулярки, обрабатывающие изображения с подписью (WordPress изменил формат их вывода).
361
+
362
  = 1.21 =
363
 
364
  * из заголовка и описания сайта теперь удаляется html-разметка.
rss-for-yandex-turbo.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: RSS for Yandex Turbo
4
  Plugin URI: https://wordpress.org/plugins/rss-for-yandex-turbo/
5
  Description: Создание RSS-ленты для сервиса Яндекс.Турбо.
6
- Version: 1.21
7
  Author: Flector
8
  Author URI: https://profiles.wordpress.org/flector#content-plugins
9
  Text Domain: rss-for-yandex-turbo
@@ -13,7 +13,7 @@ Text Domain: rss-for-yandex-turbo
13
  function yturbo_check_version() {
14
  $yturbo_options = get_option('yturbo_options');
15
  if (!isset($yturbo_options['version'])){$yturbo_options['version']='1.00';update_option('yturbo_options',$yturbo_options);}
16
- if ( $yturbo_options['version'] != '1.21' ) {
17
  yturbo_set_new_options();
18
  }
19
  }
@@ -122,7 +122,7 @@ function yturbo_set_new_options() {
122
  $yturbo_options['yttitle'] = yturbo_remove_emoji(strip_tags($yturbo_options['yttitle']));
123
  $yturbo_options['ytdescription'] = yturbo_remove_emoji(strip_tags($yturbo_options['ytdescription']));
124
 
125
- $yturbo_options['version'] = '1.21';
126
  update_option('yturbo_options', $yturbo_options);
127
  }
128
  //функция установки новых опций при обновлении плагина у пользователей end
@@ -130,7 +130,7 @@ function yturbo_set_new_options() {
130
  //функция установки значений по умолчанию при активации плагина begin
131
  function yturbo_init() {
132
  $yturbo_options = array();
133
- $yturbo_options['version'] = '1.21';
134
  $yturbo_options['ytrssname'] = 'turbo';
135
  $yturbo_options['yttitle'] = yturbo_remove_emoji(strip_tags(get_bloginfo_rss('title')));
136
  $yturbo_options['ytlink'] = get_bloginfo_rss('url');
@@ -318,9 +318,9 @@ function yturbo_files_admin($hook_suffix) {
318
  wp_enqueue_script('yturbo-textillate');
319
  wp_register_style('yturbo-animate', $purl . '/inc/animate.min.css');
320
  wp_enqueue_style('yturbo-animate');
321
- wp_register_script('yturbo-script', $purl . '/inc/yturbo-script.js', array(), '1.21');
322
  wp_enqueue_script('yturbo-script');
323
- wp_register_style('yturbo-css', $purl . '/inc/yturbo-css.css', array(), '1.21');
324
  wp_enqueue_style('yturbo-css');
325
  }
326
  }
@@ -2040,6 +2040,7 @@ function yturbo_callback(){
2040
  $custom_template = get_post_meta($post->ID, 'custom_template', true);
2041
  if (!$custom_template) {
2042
  $post_type = get_post_type( get_the_ID() );
 
2043
  if( $yturbo_options['template-'.$post_type] == '' ) {
2044
  $custom_template = '%%post_content%%';
2045
  } else {
@@ -2301,7 +2302,7 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'.PHP_EO
2301
  <?php if ($ytmediascope) { ?><turbo:analytics id="<?php echo $ytmediascope; ?>" type="Mediascope"></turbo:analytics><?php echo PHP_EOL; ?><?php } ?>
2302
  <?php do_action( 'yturbo_ads_header' ); echo yturbo_turbo_ads(); ?>
2303
  <language><?php echo $ytlanguage; ?></language>
2304
- <generator>RSS for Yandex Turbo v1.21 (https://wordpress.org/plugins/rss-for-yandex-turbo/)</generator>
2305
  <?php while($query->have_posts()) : $query->the_post(); ?>
2306
  <?php $ytremove = get_post_meta(get_the_ID(), 'ytremove_meta_value', true); ?>
2307
  <?php if ($ytremoveturbo != 'enabled' && $ytremove != 'yes') { ?>
@@ -2347,23 +2348,28 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'.PHP_EO
2347
 
2348
  $content = wpautop($content);
2349
 
2350
- //удаляем разметку движка при использовании шорткода с подписью [caption] (в html4 темах)
2351
  //и заменяем alt у тега img на текст подписи, установленной в редакторе
2352
- $pattern = "/<div id=\"attachment(.*?)>(.*?)<img(.*?)alt=\"(.*?)\"(.*?) \/>(.*?)<\/p>\n<p class=\"wp-caption-text\">(.*?)<\/p>\n<\/div>/i";
2353
- $replacement = '$2<img$3alt="$7"$5 />$6';
2354
  $content = preg_replace($pattern, $replacement, $content);
2355
  //удаляем ошметки шорткода [caption], если тег <div> удаляется в настройках плагина
2356
- $pattern = "/<p class=\"wp-caption-text\">(.*?)<\/p>/i";
2357
  $replacement = '';
2358
  $content = preg_replace($pattern, $replacement, $content);
2359
-
2360
- //удаляем разметку движка при использовании шорткода с подписью [caption] (в html5 темах)
2361
  //и заменяем alt у тега img на текст подписи, установленной в редакторе
2362
- $pattern = "/<figure id=\"attachment(.*?)>(.*?)<img(.*?)alt=\"(.*?)\"(.*?) \/>(.*?)<figcaption class=\"wp-caption-text\">(.*?)<\/figcaption><\/figure>/i";
2363
- $replacement = '$2<img$3alt="$7"$5 />$6';
2364
  $content = preg_replace($pattern, $replacement, $content);
2365
 
2366
- //удаляем <figure>, если они изначально присутствуют в контенте записи
 
 
 
 
 
2367
  $pattern = "/<figure(.*?)>(.*?)<img(.*?)>(.*?)<\/figure>/i";
2368
  $replacement = '<img$3>';
2369
  $content = preg_replace($pattern, $replacement, $content);
@@ -2373,18 +2379,6 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'.PHP_EO
2373
  $replacement = '<iframe$3></iframe>';
2374
  $content = preg_replace($pattern, $replacement, $content);
2375
 
2376
- //формируем video для mp4 файлов согласно документации яндекса (классический редактор)
2377
- $content = str_replace('<!--[if lt IE 9]><script>document.createElement(\'video\');</script><![endif]-->', '', $content);
2378
- $pattern = "/<video(.*?)><source(.*?)src=\"(.*?).mp4(.*?)\"(.*?)\/>(.*?)<\/video>/i";
2379
- $replacement = '<figure><video><source src="$3.mp4" type="video/mp4" /></video></figure>';
2380
- $content = preg_replace($pattern, $replacement, $content);
2381
-
2382
- //формируем video для mp4 файлов согласно документации яндекса (гутенберг)
2383
- $pattern = "/<figure(.*?)><video(.*?)src=\"(.*?).mp4\"(.*?)><\/video>(.*?)<\/figure>/i";
2384
- if ($ytfigcaption == 'Отключить описания') {$replacement = '<figure><video><source src="$3.mp4" type="video/mp4" /></video></figure>';}
2385
- if ($ytfigcaption != 'Отключить описания') {$replacement = '<figure><video><source src="$3.mp4" type="video/mp4" /></video>$5</figure>';}
2386
- $content = preg_replace($pattern, $replacement, $content);
2387
-
2388
  //добавляем alt если его вообще нет в теге img
2389
  $pattern = "/<img(?!([^>]*\b)alt=)([^>]*?)>/i";
2390
  $replacement = '<img alt="'. get_the_title_rss() .'"$1$2>';
@@ -2423,6 +2417,19 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'.PHP_EO
2423
  $content = preg_replace($pattern, $replacement, $content);
2424
  }
2425
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2426
  //удаляем картинки из контента, если их больше 50 уникальных (ограничение яндекс.турбо)
2427
  if (preg_match_all("/<figure><img(.*?)>(.*?)<\/figure>/i", $content, $res)) {
2428
  $i = 0;
@@ -2466,6 +2473,8 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'.PHP_EO
2466
  if ($ytseoplugin == 'Yoast SEO') {
2467
  if ( is_plugin_active( 'wordpress-seo/wp-seo.php' ) ) {
2468
  $temp = get_post_meta(get_the_ID(), '_yoast_wpseo_title', true);
 
 
2469
  if (!$temp) {
2470
  $wpseo_titles = get_option('wpseo_titles');
2471
  $sep_options = WPSEO_Option_Titles::get_instance()->get_separator_options();
@@ -2474,7 +2483,7 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'.PHP_EO
2474
  } else {
2475
  $sep = '-';
2476
  }
2477
- $temp = str_replace(array('%%title%%','%%sitename%%','%%sep%%','%%page%%'),array(get_the_title_rss(),$yttitle,$sep,''), $wpseo_titles['title-post']);
2478
  }
2479
  } else {
2480
  $temp = get_the_title_rss();
@@ -2487,9 +2496,11 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'.PHP_EO
2487
  if ($ytseoplugin == 'All in One SEO Pack') {
2488
  if ( is_plugin_active( 'all-in-one-seo-pack/all_in_one_seo_pack.php' ) ) {
2489
  $temp = get_post_meta(get_the_ID(), '_aioseop_title', true);
 
 
2490
  if (!$temp) {
2491
  global $aioseop_options;
2492
- $temp = str_replace(array('%page_title%','%blog_title%','%post_title%'),array(get_the_title_rss(),$yttitle,get_the_title_rss()), $aioseop_options['aiosp_post_title_format']);
2493
  }
2494
  } else {
2495
  $temp = get_the_title_rss();
3
  Plugin Name: RSS for Yandex Turbo
4
  Plugin URI: https://wordpress.org/plugins/rss-for-yandex-turbo/
5
  Description: Создание RSS-ленты для сервиса Яндекс.Турбо.
6
+ Version: 1.22
7
  Author: Flector
8
  Author URI: https://profiles.wordpress.org/flector#content-plugins
9
  Text Domain: rss-for-yandex-turbo
13
  function yturbo_check_version() {
14
  $yturbo_options = get_option('yturbo_options');
15
  if (!isset($yturbo_options['version'])){$yturbo_options['version']='1.00';update_option('yturbo_options',$yturbo_options);}
16
+ if ( $yturbo_options['version'] != '1.22' ) {
17
  yturbo_set_new_options();
18
  }
19
  }
122
  $yturbo_options['yttitle'] = yturbo_remove_emoji(strip_tags($yturbo_options['yttitle']));
123
  $yturbo_options['ytdescription'] = yturbo_remove_emoji(strip_tags($yturbo_options['ytdescription']));
124
 
125
+ $yturbo_options['version'] = '1.22';
126
  update_option('yturbo_options', $yturbo_options);
127
  }
128
  //функция установки новых опций при обновлении плагина у пользователей end
130
  //функция установки значений по умолчанию при активации плагина begin
131
  function yturbo_init() {
132
  $yturbo_options = array();
133
+ $yturbo_options['version'] = '1.22';
134
  $yturbo_options['ytrssname'] = 'turbo';
135
  $yturbo_options['yttitle'] = yturbo_remove_emoji(strip_tags(get_bloginfo_rss('title')));
136
  $yturbo_options['ytlink'] = get_bloginfo_rss('url');
318
  wp_enqueue_script('yturbo-textillate');
319
  wp_register_style('yturbo-animate', $purl . '/inc/animate.min.css');
320
  wp_enqueue_style('yturbo-animate');
321
+ wp_register_script('yturbo-script', $purl . '/inc/yturbo-script.js', array(), '1.22');
322
  wp_enqueue_script('yturbo-script');
323
+ wp_register_style('yturbo-css', $purl . '/inc/yturbo-css.css', array(), '1.22');
324
  wp_enqueue_style('yturbo-css');
325
  }
326
  }
2040
  $custom_template = get_post_meta($post->ID, 'custom_template', true);
2041
  if (!$custom_template) {
2042
  $post_type = get_post_type( get_the_ID() );
2043
+ if ( !isset($yturbo_options['template-'.$post_type]) ) {$yturbo_options['template-'.$post_type] = '';}
2044
  if( $yturbo_options['template-'.$post_type] == '' ) {
2045
  $custom_template = '%%post_content%%';
2046
  } else {
2302
  <?php if ($ytmediascope) { ?><turbo:analytics id="<?php echo $ytmediascope; ?>" type="Mediascope"></turbo:analytics><?php echo PHP_EOL; ?><?php } ?>
2303
  <?php do_action( 'yturbo_ads_header' ); echo yturbo_turbo_ads(); ?>
2304
  <language><?php echo $ytlanguage; ?></language>
2305
+ <generator>RSS for Yandex Turbo v1.22 (https://wordpress.org/plugins/rss-for-yandex-turbo/)</generator>
2306
  <?php while($query->have_posts()) : $query->the_post(); ?>
2307
  <?php $ytremove = get_post_meta(get_the_ID(), 'ytremove_meta_value', true); ?>
2308
  <?php if ($ytremoveturbo != 'enabled' && $ytremove != 'yes') { ?>
2348
 
2349
  $content = wpautop($content);
2350
 
2351
+ //удаляем разметку движка при использовании шорткода с подписью [caption] (в html4 темах - classic editor)
2352
  //и заменяем alt у тега img на текст подписи, установленной в редакторе
2353
+ $pattern = "/<div id=\"attachment(.*?)>(.*?)<img alt=\"(.*?)\"(.*?) \/>(.*?)<\/p>\n<p id=\"caption-attachment(.*?)\">(.*?)<\/p>\n<\/div>/i";
2354
+ $replacement = '<img alt="$7"$4 />';
2355
  $content = preg_replace($pattern, $replacement, $content);
2356
  //удаляем ошметки шорткода [caption], если тег <div> удаляется в настройках плагина
2357
+ $pattern = "/<p id=\"caption-attachment(.*?)\">(.*?)<\/p>/i";
2358
  $replacement = '';
2359
  $content = preg_replace($pattern, $replacement, $content);
2360
+
2361
+ //удаляем разметку движка при использовании шорткода с подписью [caption] (в html5 темах - classic editor)
2362
  //и заменяем alt у тега img на текст подписи, установленной в редакторе
2363
+ $pattern = "/<figure id=\"attachment(.*?)\"(.*?)>(.*?)<img alt=\"(.*?)\"(.*?) \/>(.*?)<figcaption id=\"caption-attachment(.*?)\">(.*?)<\/figcaption><\/figure>/i";
2364
+ $replacement = '<img alt="$8"$5 />';
2365
  $content = preg_replace($pattern, $replacement, $content);
2366
 
2367
+ //удаляем <figure>, если они изначально присутствуют в контенте записи (с указанным caption - gutenberg)
2368
+ $pattern = "/<figure(.*?)>(.*?)<img(.*?)src=\"(.*?)\" \/>(.*?)<figcaption>(.*?)<\/figcaption><\/figure>/i";
2369
+ $replacement = '<img alt="$6" src="$4" />';
2370
+ $content = preg_replace($pattern, $replacement, $content);
2371
+
2372
+ //удаляем <figure>, если они изначально присутствуют в контенте записи (без caption - gutenberg)
2373
  $pattern = "/<figure(.*?)>(.*?)<img(.*?)>(.*?)<\/figure>/i";
2374
  $replacement = '<img$3>';
2375
  $content = preg_replace($pattern, $replacement, $content);
2379
  $replacement = '<iframe$3></iframe>';
2380
  $content = preg_replace($pattern, $replacement, $content);
2381
 
 
 
 
 
 
 
 
 
 
 
 
 
2382
  //добавляем alt если его вообще нет в теге img
2383
  $pattern = "/<img(?!([^>]*\b)alt=)([^>]*?)>/i";
2384
  $replacement = '<img alt="'. get_the_title_rss() .'"$1$2>';
2417
  $content = preg_replace($pattern, $replacement, $content);
2418
  }
2419
 
2420
+ $purl = plugins_url('', __FILE__);
2421
+ //формируем video для mp4 файлов согласно документации яндекса (классический редактор)
2422
+ $content = str_replace('<!--[if lt IE 9]><script>document.createElement(\'video\');</script><![endif]-->', '', $content);
2423
+ $pattern = "/<video(.*?)><source(.*?)src=\"(.*?).mp4(.*?)\"(.*?)\/>(.*?)<\/video>/i";
2424
+ $replacement = '<figure><video><source src="$3.mp4" type="video/mp4" /></video><img src="'.$purl.'/img/video.png'.'" /></figure>';
2425
+ $content = preg_replace($pattern, $replacement, $content);
2426
+
2427
+ //формируем video для mp4 файлов согласно документации яндекса (гутенберг)
2428
+ $pattern = "/<figure class=\"wp-block-video\"><video(.*?)src=\"(.*?).mp4\"(.*?)><\/video>(.*?)<\/figure>/i";
2429
+ if ($ytfigcaption == 'Отключить описания') {$replacement = '<figure><video><source src="$2.mp4" type="video/mp4" /></video><img src="'.$purl.'/img/video.png'.'" /></figure>';}
2430
+ if ($ytfigcaption != 'Отключить описания') {$replacement = '<figure><video><source src="$2.mp4" type="video/mp4" /></video><img src="'.$purl.'/img/video.png'.'" />$4</figure>';}
2431
+ $content = preg_replace($pattern, $replacement, $content);
2432
+
2433
  //удаляем картинки из контента, если их больше 50 уникальных (ограничение яндекс.турбо)
2434
  if (preg_match_all("/<figure><img(.*?)>(.*?)<\/figure>/i", $content, $res)) {
2435
  $i = 0;
2473
  if ($ytseoplugin == 'Yoast SEO') {
2474
  if ( is_plugin_active( 'wordpress-seo/wp-seo.php' ) ) {
2475
  $temp = get_post_meta(get_the_ID(), '_yoast_wpseo_title', true);
2476
+ $temp = str_replace(array('%%title%%','%%sitename%%','%%sep%%','%%page%%'),array(get_the_title_rss(),$yttitle,'-',''), $temp);
2477
+ $temp = str_replace(' ',' ', $temp);
2478
  if (!$temp) {
2479
  $wpseo_titles = get_option('wpseo_titles');
2480
  $sep_options = WPSEO_Option_Titles::get_instance()->get_separator_options();
2483
  } else {
2484
  $sep = '-';
2485
  }
2486
+ $temp = str_replace(array('%%title%%','%%sitename%%','%%sep%%','%%page%%'),array(get_the_title_rss(),$yttitle,$sep,''), $wpseo_titles['title-'.get_post_type( get_the_ID() )]);
2487
  }
2488
  } else {
2489
  $temp = get_the_title_rss();
2496
  if ($ytseoplugin == 'All in One SEO Pack') {
2497
  if ( is_plugin_active( 'all-in-one-seo-pack/all_in_one_seo_pack.php' ) ) {
2498
  $temp = get_post_meta(get_the_ID(), '_aioseop_title', true);
2499
+ $temp = str_replace(array('%page_title%','%blog_title%','%post_title%'),array(get_the_title_rss(),$yttitle,get_the_title_rss()), $temp);
2500
+ $temp = str_replace(' ',' ', $temp);
2501
  if (!$temp) {
2502
  global $aioseop_options;
2503
+ $temp = str_replace(array('%page_title%','%blog_title%','%post_title%'),array(get_the_title_rss(),$yttitle,get_the_title_rss()), $aioseop_options['aiosp_'.get_post_type( get_the_ID() ).'_title_format']);
2504
  }
2505
  } else {
2506
  $temp = get_the_title_rss();