RSS Reader per WordPress in PHP

Questo è solo un prototipo, un esempio di codice.

Ogni sito wordpress ha nativamente un RSS che mostra gli articoli del sito web, così da poter rimanere in contatto.
A questa pagina si può vedere come sia strutturato (Link alla documentazione del feed di wordpress), l’output generato è simile alla seguente struttura

<channel>
   <title> Titolo del sito web </title>
   ...
   <item> 
      <title>Titolo dell'articolo 1 </title>
      ...
      <description> Riassunto articolo </description>
   </item> 
   <item> 
      <title>Titolo dell'articolo 1 </title>
      ...
      <description> Riassunto articolo </description>
   </item>
...
</channel> 

Quindi per ogni articolo viene generato un tag <item> con all’interno varie informazioni, quelle che ho usato sono principalmente due: Titolo e Descrizione.


Codice

Il codice per questa operazione è stata la seguente:

<html>
  <head>
    <title>Rss reader</title>
  </head>

  <link rel="stylesheet" href="style.css">
  <body>
<?php
function getContent($Url)
{
  //https://howto.webarea.it/php/come-utilizzare-curl-php-chiamate-get-post_73
  $curlSES=curl_init();
  curl_setopt($curlSES,CURLOPT_URL,$Url);
  curl_setopt($curlSES,CURLOPT_RETURNTRANSFER,true);
  curl_setopt($curlSES,CURLOPT_HEADER, false);
  $result=curl_exec($curlSES);
  curl_close($curlSES);
  return $result;
}
$Url = "https://example.it/feed/";
if($_GET['url'])
  $Url = $_GET['url'];
$result=getContent($Url);

$feed = new SimpleXMLElement($result);


function printRootAndFirstChildOfXml($Xml)
{
  foreach ($Xml->children() as $child){
      echo "Name Of Child: ".$child->getName();
      echo "</br>";
      // Get attributes of this element
      foreach ($child->attributes() as $attr){
          echo 'Name of Attributes: ' . $attr->getName() . ': ' . $attr;

          echo "</br>";
      }
      // Get children
      foreach ($child->children() as $subchild){
          echo 'Name Of subchild: ' . $subchild->getName() . ': ' . $subchild;

          echo "</br>";
      }
  }
}

function printExampleOfRss()
{
echo($feed->channel->title);

  for($i=0;$i<2;$i++)
  {
    echo($feed->channel->item[$i]->title);
  }
}

 ?>

<h3 class="NameOfChannel"><?= $feed->channel->title ?></h3>

<?php
  function printItem($item)
  {
    ?>
      <div class="item">
        <div class="title"><?= $item->title ?></div>
        <div class="description"><?= $item->description ?></div>
      </div>
    <?php
  }

  for($iteration=0;$iteration<count($feed->channel->item);$iteration++)
    printItem($feed->channel->item[$iteration]);

  ?>

  </body>
</html>

Per migliorare la formattazione del codice ho aggiunto le seguenti regole di CSS:

.item{
  width: 30vw;
  margin-right: 2vw;
  border:1px solid black;
  float:left;
  min-height: 50vh;
  margin-bottom: 10vh;
}
  .item .title
  {
    font-size: 30px;
    background-color: #eee;
    text-align: center;
    padding:10px 0px;
  }
  .item .description
  {
    font-size: 20px;
    padding: 5px;
  }

  .NameOfChannel
  {
    color:#000099;
    text-align: center;
    font-size: 35px;
    width: 100vw;
  }

Conclusione

Questo è uno script basilare, ci sono molte cose che si possono fare per migliorare, partendo dal fatto di connettrlo a un database sia per fare il login degli utenti, sia per tenere registrate i diversi url con i relativi RSS, in modo da ridurre drasticamente il numero di richieste, quindi si potrebbe utilizzare un framework come Laravel o simili per creare un vero e proprio RSS reader.

Altra cosa importante, questo è funzionale al momento solo per lo standard di wordpress e non crea molti controlli sul reale riuscita della richiesta.