2012-02-10 13 views
6

Hola tengo un sitio web y un blog, quiero mostrar mi blog alojado de wordpress en mi sitio web.¿Cómo mostrar WordPress RSS alimentar su sitio web?

  1. Quiero mostrar solo 3 publicación en mi sitio web.
  2. Quiero comprobar automáticamente si hay alguna publicación nueva cada vez que recargo mi sitio web, de modo que solo se muestren los tres recientes.
  3. Quiero mostrar el título completo de mi blog de WordPress pero letras de descripción específicas.
  4. también la descripción debe terminar con una palabra no alguna pieza de la palabra no-diccionario que termina con "..."

¿Cómo se puede hacer esto, he oído que puede hacerse a través de RSS. ¿Alguien puede ayudarme?

Respuesta

5

Para lograr esto necesita leer el RSS del blog, desde el RSS necesita leer el Título y la descripción, después de leer la descripción completa y el título, necesita recortar la descripción al número deseado de letras. Después de eso, debe verificar si la descripción de la última palabra se completó o no, y luego debe eliminar la última palabra si no se completó y colocar el "...".

primer lugar vamos a hacer un script para recortar la descripción y de poner "..." en el pasado: -

<?php 
global $text, $maxchar, $end; 
function substrwords($text, $maxchar, $end='...') { 
    if (strlen($text) > $maxchar || $text == '') { 
     $words = preg_split('/\s/', $text);  
     $output = ''; 
     $i  = 0; 
     while (1) { 
      $length = strlen($output)+strlen($words[$i]); 
      if ($length > $maxchar) { 
       break; 
      } 
      else { 
       $output .= " " . $words[$i]; 
       ++$i; 
      } 
     } 
     $output .= $end; 
    } 
    else { 
     $output = $text; 
    } 
    return $output; 
} 

Ahora vamos a definir las variables en las que almacenamos los valores: -

$xml=("http://your-blog-path/rss/"); 
global $item_title, $item_link, $item_description; 

$xmlDoc = new DOMDocument(); 

$xmlDoc->load($xml); 

$x=$xmlDoc->getElementsByTagName('item'); 

Ahora, crearemos una matriz y almacenaremos valores en ella. Solo tomo 3 porque lo has preguntado el camino. Puede cambiarlo a cualquier cosa (El número de mensaje que desea mostrar, puesto que en el bucle)

for ($i=0; $i<3; $i++) 

{ 

$item_title[$i] = $x->item($i)->getElementsByTagName('title')->item(0)->childNodes->item(0)->nodeValue; 

$item_link[$i] = $x->item($i)->getElementsByTagName('link')->item(0)->childNodes->item(0)->nodeValue; 

$item_description[$i] = $x->item($i)->getElementsByTagName('description')->item(0)->childNodes->item(0)->nodeValue; 

} 

?> 

Ahora se hacen eco de todos estos valores, Link es el valor en el que el usuario haga clic y se le conducirá a tu blog: -

primer post reciente:

<a href="<?php echo $item_link[0]; ?>"><?php echo $item_title[0]; ?></a> 
<?php echo substrwords($item_description[0],70); ?> 

post reciente SEGUNDO:

<a href="<?php echo $item_link[1]; ?>"><?php echo $item_title[1]; ?></a> 
<?php echo substrwords($item_description[1],70); ?> 

TERCER PUENTE RECIENTE:

<a href="<?php echo $item_link[2]; ?>"><?php echo $item_title[2]; ?></a> 
<?php echo substrwords($item_description[2],70); ?> 

Espero que esto pueda resolver su problema. Por cierto Buena pregunta.

+0

Para eso creo que deberías volver a abrir una pregunta ... –

+0

Utilicé este código pero me aparece el siguiente error: "PHP Fatal error: llamada a una función miembro getElementsByTagName() en un objeto no asociado". La línea del problema es la primera línea del bucle for: $ item_title [$ i] = $ x-> item ($ i) -> getElementsByTagName ('title') -> item (0) -> childNodes-> item (0) -> nodeValue; – fullerm

3

Click here para la documen originales ción sobre la visualización de feeds RSS con PHP.función de

Django Anonymous substrwords se utiliza para recortar la descripción y para insertar el ... al final de la descripción si el que pasa el valor $maxchar.


Código completo:

blog.php

<?php 
    global $text, $maxchar, $end; 
    function substrwords($text, $maxchar, $end='...') { 
     if (strlen($text) > $maxchar || $text == '') { 
      $words = preg_split('/\s/', $text);  
      $output = ''; 
      $i  = 0; 
      while (1) { 
       $length = strlen($output)+strlen($words[$i]); 
       if ($length > $maxchar) { 
        break; 
       } else { 
        $output .= " " . $words[$i]; 
        ++$i; 
       } 
      } 
      $output .= $end; 
     } else { 
      $output = $text; 
     } 
     return $output; 
    } 

    $rss = new DOMDocument(); 
    $rss->load('http://wordpress.org/news/feed/'); // <-- Change feed to your site 
    $feed = array(); 
    foreach ($rss->getElementsByTagName('item') as $node) { 
     $item = array ( 
      'title' => $node->getElementsByTagName('title')->item(0)->nodeValue, 
      'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue, 
      'link' => $node->getElementsByTagName('link')->item(0)->nodeValue, 
      'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue, 
     ); 
     array_push($feed, $item); 
    } 

    $limit = 3; // <-- Change the number of posts shown 
    for ($x=0; $x<$limit; $x++) { 
     $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']); 
     $link = $feed[$x]['link']; 
     $description = $feed[$x]['desc']; 
     $description = substrwords($description, 100); 
     $date = date('l F d, Y', strtotime($feed[$x]['date'])); 
     echo '<p><strong><a href="'.$link.'" title="'.$title.'">'.$title.'</a></strong><br />'; 
     echo '<small><em>Posted on '.$date.'</em></small></p>'; 
     echo '<p>'.$description.'</p>'; 
    } 
?> 

Usted puede poner fácilmente esto en un archivo PHP separado (blog.php) y llamarlo dentro de su real página.

Ejemplo:

social.php

<h3>Latest blog post:</h3> 
<?php require 'blog.php' ?> 

Además, este código es plug-n-play de usar.

Cuestiones relacionadas