Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Unferth

xml + php Pegar ultimo post por categoria.

Recommended Posts

Bom pessoal o que eu necessito é exibir o ultimo post de cada categoria do wordpress, no meu portal de notícias através do xml, em uma lista, tentei alterar código abaixo para tal, entretanto não estou sabendo como exibir cada um, pesquisei por ai a fora e não obtive resultados, ainda fiz um array pra testar se seria possível, alguém poderia dar uma força? Desde já obrigado, segue o código abaixo:

 

<?php

$categoria[1] = '&cat=4';
$categoria[2] = '&cat=8';


$url = 'http://www.ssssssss.com.br/blog/?feed=rss2'.$categoria[1];



$doc = new DOMDocument();
$doc->load($url);

$items = $doc->getElementsByTagName("item");

if ($items != null) {
   foreach ($items as $item) {
       $titles = $item->getElementsByTagName('title');
       $title[] = $titles->item(0)->nodeValue;

       $links = $item->getElementsByTagName('link');
       $link[] = $links->item(0)->nodeValue;

       $pubDates = $item->getElementsByTagName('pubDate');
       $pubDate[] = $pubDates->item(0)->nodeValue;

	$categorys = $item->getElementsByTagName('category');
       $category[] = $categorys->item(0)->nodeValue;
   }

   $title = array_slice($title, 0, 1);
   for ($i=0; $i<sizeof($title); $i++) {
       echo '<li><a href="'.$link[$i].'" target="_blank"><h1>'.$category[$i],'</h1>' . date('d/m/Y - H:i', strtotime($pubDate[$i])) . '<br />' . substr($title[$i], 0, 35) . '...</a></li>';
   }
} else {
   echo 'Não foi possível carregar a lista XML.';
}
?>            

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer que pegue o ultimo 'item' desse RSS ?

 

Amigo, vou explicar melhor, o que eu quero é o seguinte que seja puxado o ultimo post de cada categoria e seja exibido em uma lista, são 10 categorias, elas vão ficar exibidas na lista, sempre que alguém postar em determinada categoria, só o xml dela é alterado, o ultimo item de cada categoria:

 

$url = 'http://www.ssssssss.com.br/blog/?feed=rss2'.$categoria[1];
$url = 'http://www.ssssssss.com.br/blog/?feed=rss2'.$categoria[2];
$url = 'http://www.ssssssss.com.br/blog/?feed=rss2'.$categoria[3];
$url = 'http://www.ssssssss.com.br/blog/?feed=rss2'.$categoria[4];
$url = 'http://www.ssssssss.com.br/blog/?feed=rss2'.$categoria[5];

 

como se fosse assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opá, foi mal.. tive um probleminha aqui em casa =), enfim.. essas categorias são as do XML ?

Ou são separadas em outro XML :P

 

Essas categorias são do xml do blog, ou seja eu quero puxar do blog wordpress pra o site em si. Mas por categoria, a ultima entrada de cada categoria do blog.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe a demora, energia caiu aqui.

Okay não estou entendendo sua estrutura, se é um XML, se e 2 .. enfim .

Eu concluí que você quer pegar o ultimo POST de cada categoria nesse link que você passou de RSS

Então ele vai pegar a ultima categoria de um item, então imaginei o seguinte XML.

Já que não consegui me basear na sua estrutura ..

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <channel>
         <item>
               <category>Cat1</category>
               <description>000</description>
         </item>
         <item>
               <category>Cat1</category>
               <description>123</description>
         </item>
         <item>
               <category>Cat2</category>
               <description>456</description>
         </item>
         <item>
               <category>Cat3</category>
               <description>789</description>
         </item>
    </channel>    
</root>

 

<?php
       $DOMDocument = new DOMDocument( '1.0', 'utf-8' );
       $DOMDocument->preserveWhiteSpace = false;
       $DOMDocument->load( 'rss.xml' ); #seu xml( link, ou arquivo interno )
       $DOMXPath = new DOMXPath( $DOMDocument );
       foreach( $DOMXPath->query('.//channel/item[not(category = following::category)]') as $Nodes ){
                foreach( $Nodes->childNodes as $Node ){
                         $RSS[ $Node->nodeName ] = $Node->nodeValue;
                }
                $RSSContents[] = $RSS;
       }
       echo '<pre>';
       print_r( $RSSContents );

 

Me retornou:

Array
(
   [0] => Array
       (
           [category] => Cat1
           [description] => 123
       )

   [1] => Array
       (
           [category] => Cat2
           [description] => 456
       )

   [2] => Array
       (
           [category] => Cat3
           [description] => 789
       )

)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora como faço pra mostrar as últimas de cada categorias numa lista que exiba apenas o titulo, um trecho do conteúdo e a data que foi cadastrada?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.