Как в WordPress прочитать внешнюю RSS

Требуется на странице сайта на Wordpress прочитать содержимое внешней RSS. Как это сделать? Если плагинами, то какими?

Специалист Вопрос задан в 27.12.2014 в RSS.
Добавить комментарий
2 Ответ (-ов)

    В Wordpress есть своя встроенная функция чтения внешних RSS. Нашел в сети простой вариант ее подключения в записях или страницах с помощью шорткода. Для начала нужно написать саму функцию в файле functions.php вашей текущей темы:

    
    include_once(ABSPATH.WPINC.'/rss.php');
    
    function readsRss($atts) {
    
    extract(shortcode_atts(array(
    
    "feed" => '',
    
    "num" => '1',
    
    ), $atts));
    
    return wp_rss($feed, $num);
    
    }
    
    add_shortcode('rss', 'readsRss');
    
    

    А затем, вы можете вызывать функцию в страницах или записях следующим шорткодом:

    
    [rss feed="https://faqwp.com/feed" num="7"]
    
    

    в нем указывается адрес RSS ленты и количество сообщений, которое будет считываться из RSS ленты

    Продвинутый Отвечено в 27.12.2014.
    Добавить комментарий

      Может кому-то понадобится вариант на php (вариант чтения RSS). Я использую его на некоторых сайтах в виджетах WordPress. Преимущества данного метода:

      • никаких плагинов
      • кеширование данных
      • обработка фотографий с удаленной rss ленты
      
      <?php
      
      function print_rss($url_rss,$file_rss,$hclock,$kol_print_news)
      
      {
      
      if (!file_exists($file_rss) || ( filemtime($file_rss) + $hclock*60*60 < time() ) )
      
      {
      
      if (@!copy ($url_rss,$file_rss))
      
      return (false);
      
      $text_rss=file($file_rss);
      
      $text_rss=implode("",$text_rss);
      
      if (preg_match('/<?xml[^>]+encoding[\s]*=[\s]*("|\')windows-1251("|\')[^>]+?>/i', $text_rss))
      
      {
      
      $text_rss = iconv("cp1251", "utf-8", $text_rss);
      
      file_put_contents($file_rss, $text_rss);
      
      }
      
      }
      
      $text_rss=file($file_rss);
      
      $text_rss=implode("",$text_rss);
      
      $url_image = "";
      
      $image_is=preg_match("#<image>(.*?)</image>#is",$text_rss,$image_m);
      
      if ( $image_is )
      
      {
      
      $image_url_is = preg_match("#<url>(.*?)</url>#is",$image_m[0],$image_t);
      
      if ( $image_url_is )
      
      $url_image = $image_t[1];
      
      }
      
      $mas_item=array();
      
      preg_match_all("#<item>.*?</item>#is",$text_rss,$mas_item);
      
      $one_item=array();
      
      $t="";
      
      $t.=( $url_image ? "<div><img src='".$url_image."' ></div>" :"");
      
      $kol=0;
      
      if (sizeof($mas_item)>0)
      
      {
      
      foreach ($mas_item[0] as $one_item)
      
      {
      
      $date = "";
      
      $kol++;
      
      $t_is=preg_match("#<title>(.*?)</title>#is",$one_item,$title);
      
      $l_is=preg_match("#<link>(.*?)</link>#is",$one_item,$link);
      
      $d_is=preg_match("#<description>(.*?)</description>#is",$one_item,$description);
      
      $date_is=preg_match("#<pubDate>(.*?)</pubDate>#is",$one_item,$date_t);
      
      if ($t_is && $l_is)
      
      {
      
      $title[1]=preg_replace("#<\!\[CDATA\[(.*?)\]\]>#eis","'\\1'",$title[1]);
      
      $link[1]=preg_replace("#<\!\[CDATA\[(.*?)\]\]>#eis","'\\1'",$link[1]);
      
      $sss=preg_replace("#<\!\[CDATA\[(.*?)\]\]>#eis","'\\1'",$description[1]);
      
      // $description[1]=substr($sss, 0, 500);
      
      $description[1] = implode(array_slice(explode('<br>',wordwrap($sss,600,'<br>',false)),0,1));
      
      if ( $date_is )
      
      $date = strtotime($date_t[1]);
      
      $t.="<div class=\"populars2\">
      
      <div style=\"background-color:lightgray; color:#0000ff;\">
      
      [".date("d.n.Y",$date)."] <noindex><a rel=\"nofollow\" href='".$link[1]."' target='_blank'>".$title[1]."</a></div></noindex>
      
      <br>".$description[1]."...<br><br></div>";
      
      }
      
      if ($kol >= $kol_print_news) break;
      
      }
      
      }
      
      $t = str_replace('\"','"', $t);
      
      $t = str_replace('width="150" height="150"','width="95" height="70" class="attachment- wp-post-image"', $t);
      
      $t = str_replace('float: left','float: right', $t);
      
      $t = str_replace('margin: 0px 10px 5px 0px','margin: 0px 10px 5px 10px', $t);
      
      echo ($t);
      
      return (true);
      
      }
      
      ?>
      
      <?php
      
      $url_rss="https://faqwp.com/feed/"; //адрес rss ленты
      
      $kol_print_news=3;
      
      $file_rss="cache_rss.xml"; //файл в которых будет записываться кеш
      
      $hclock=1;
      
      print_rss($url_rss,$file_rss,$hclock,$kol_print_news);
      
      ?>
      
      
      Гуру Отвечено в 28.12.2014.

      А можно немного поподробней узнать как это реализовать (куда что вставлять) ? а то я в этом сильно грамотный и слова “вариант на php”  мне не о чем не говорят. И сразу бы узнать как в этом гаджете закрыть ссылки от индексации noindex и noffolow, и что бы они открывались в новом окне.

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

      Ваш ответ

      Размещая свой ответ, вы соглашаетесь с политикой конфиденциальности и условиями предоставления услуг.