Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

post recientes de mi blog en mi web

Estas en el tema de post recientes de mi blog en mi web en el foro de WordPress en Foros del Web. ¿Alguien sabe cómo puedo insertar dentro de mi web html/php los últimos post que tengo en mi wordpress y que está en otro dominio? He ...
  #1 (permalink)  
Antiguo 29/05/2014, 04:55
 
Fecha de Ingreso: diciembre-2003
Mensajes: 474
Antigüedad: 21 años
Puntos: 5
Busqueda post recientes de mi blog en mi web

¿Alguien sabe cómo puedo insertar dentro de mi web html/php los últimos post que tengo en mi wordpress y que está en otro dominio? He probado a través de RSS y funciona pero necesito las imágenes para que sea un poco más atractivo y los RSS no te dan la imagen, solo título, descripción, link, fecha...

Os dejo lo que tengo integrado a falta de la imagen:


<?php
$rss = new DOMDocument();
$rss->load('http://miblog.com/?feed=rss2');
$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 = 7;
for($x=0;$x<$limit;$x++) {
$title = str_replace(' & ', ' &amp; ', $feed[$x]['title']);
$link = $feed[$x]['link'];
//$description = $feed[$x]['desc'];
//$date = date('d - m - Y', strtotime($feed[$x]['date']));
echo '<tr style="font-size:12px"><td>AQUÍ IRÍA LA IMAGEN</td><td style="padding:5px;"><a href="'.$link.'" title="'.$title.'" style="color:#CCC;" target="_blank"><strong>[+]</strong> '.$title.'</a></td></tr>';
//echo '<small><em>Posted on '.$date.'</em></small></p>';
//echo '<p>'.$description.'</p>';
}
////////

?>
  #2 (permalink)  
Antiguo 29/05/2014, 09:32
 
Fecha de Ingreso: diciembre-2003
Mensajes: 474
Antigüedad: 21 años
Puntos: 5
Respuesta: post recientes de mi blog en mi web

He conseguido introducir los thumnails en el rss del wordpress añadiendo una función en el functions.php del tema pero sigue sin verse las imágenes. Os pso el código que tengo hasta ahora:

$rss = new DOMDocument();
$rss->load('http://miblog.com/?feed=rss2');
$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,
'image' => $node->getElementsByTagName('content:encoded')->item(0)->nodeValue,
);
array_push($feed, $item);
}
$limit = 3;
for($x=0;$x<$limit;$x++) {
$title = str_replace(' & ', ' &amp; ', $feed[$x]['title']);
$link = $feed[$x]['link'];
$description = $feed[$x]['desc'];
$date = date('l F d, Y', strtotime($feed[$x]['date']));
$image = $feed[$x]['image'];
echo $image;
echo '<div class="news-row-index">';
echo '<div class="img"><a href="'.$link.'" target="_blank" title="'.$title.'"><img src="'.$image.'" height="79" width="89"></a></div>';
echo '<div class="details-index"><p><h5><a href="'.$link.'" target="_blank" title="'.$title.'">'.$title.'</a></h5><br />';
//echo '<small><em>Posted on '.$date.'</em></small></p>';
//echo '<p>'.$description.'</p></div>';
echo '</div>';
}
  #3 (permalink)  
Antiguo 30/05/2014, 02:08
Avatar de AlejandroGalvez  
Fecha de Ingreso: noviembre-2013
Mensajes: 189
Antigüedad: 11 años, 1 mes
Puntos: 49
Respuesta: post recientes de mi blog en mi web

¿Por qué no conectas con la base de datos de WordPress vía mysqli? Sería mucho más cómodo, práctico y potente.No sé cuan avanzados son tus conocimientos pero si sabes calentarte la cabeza con DOMDocument() esto tampoco te supondrá un gran problema.
  #4 (permalink)  
Antiguo 30/05/2014, 02:25
 
Fecha de Ingreso: diciembre-2003
Mensajes: 474
Antigüedad: 21 años
Puntos: 5
Respuesta: post recientes de mi blog en mi web

Gracias. Buena idea. Estoy tan cegado con las rss que no he visto la solución más directa. Voy a probarlo y te cuento.

Gracias.
  #5 (permalink)  
Antiguo 30/05/2014, 09:02
Avatar de chichote
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Santiago - Chile
Mensajes: 1.868
Antigüedad: 20 años
Puntos: 145
Respuesta: post recientes de mi blog en mi web

instala un plugin para generar una api tipo rest y rescata todo en json.

saludos.
__________________
http://chicho.ninja yiaaaa
  #6 (permalink)  
Antiguo 31/05/2014, 06:36
 
Fecha de Ingreso: diciembre-2003
Mensajes: 474
Antigüedad: 21 años
Puntos: 5
Respuesta: post recientes de mi blog en mi web

Cita:
Iniciado por AlejandroGalvez Ver Mensaje
¿Por qué no conectas con la base de datos de WordPress vía mysqli? Sería mucho más cómodo, práctico y potente.No sé cuan avanzados son tus conocimientos pero si sabes calentarte la cabeza con DOMDocument() esto tampoco te supondrá un gran problema.
He sacado el campo del título conectando directamente a la BD del wordpress pero no sé cómo sacar el thumbnail asociado al post.:

Código PHP:
echo '<tr><td>[B]NO SÉ DÓNDE SE GUARDAN LAS IMG EN LA BD[/B]</td><td>- <a href="http://***.com/?p='.$row[0].'" target="_blank">'utf8_encode($row['post_title']).'</a></td></tr>'
Gracias otra vez.

Última edición por webosiris; 10/07/2014 a las 07:14
  #7 (permalink)  
Antiguo 31/05/2014, 10:15
Avatar de AlejandroGalvez  
Fecha de Ingreso: noviembre-2013
Mensajes: 189
Antigüedad: 11 años, 1 mes
Puntos: 49
Respuesta: post recientes de mi blog en mi web

La ID del thumbnail (imagen destacada del post) se guarda en un meta del post, concretamente en _thumbnail_id. Tendrás que obtenerla de allí relacionandola a través de la ID del post al que pertenece.
  #8 (permalink)  
Antiguo 01/06/2014, 03:23
 
Fecha de Ingreso: diciembre-2003
Mensajes: 474
Antigüedad: 21 años
Puntos: 5
Respuesta: post recientes de mi blog en mi web

Cita:
Iniciado por AlejandroGalvez Ver Mensaje
La ID del thumbnail (imagen destacada del post) se guarda en un meta del post, concretamente en _thumbnail_id. Tendrás que obtenerla de allí relacionandola a través de la ID del post al que pertenece.
Perdón por mi ignorancia pero ¿cuál es la tabla concretamente donde se almacenan las imágenes? no logro verla, no tengo _thumbnail_id....
  #9 (permalink)  
Antiguo 01/06/2014, 05:09
Avatar de AlejandroGalvez  
Fecha de Ingreso: noviembre-2013
Mensajes: 189
Antigüedad: 11 años, 1 mes
Puntos: 49
Respuesta: post recientes de mi blog en mi web

Me disculpo, no tenía mucho tiempo para responder (igual que ahora) y lo dejé todo un poco en el aire.

La información de las imágenes se almacena como un post en la tabla wp_posts y se pueden identificar puesto que su propiedad post_type guarda el valor attachment. Por tanto para obtener una imagen debes de:
  1. Con la ID del post puedes recuperar su meta (si existe) _thumbnail_id de la tabla wp_postmeta. Solo deberás recuperar el registro relacionándolo mediante la columna post_id = id del post acual y la columna meta_key = _thumbnail_id.
  2. Del registro deberás obtener la columna meta_value que guarda la ID de la imagen en la tabla wp_posts.
  3. Ahora que tienes la ID de la imagen destacada de tu post solo debes recuperar su información de la tabla wp_posts a través del campo ID y el campo post_type = attachment (para mayor seguridad, aunque con la ID absoluta no necesitarás esta comprobación).
  4. Puedes obtener la URL absoluta de la imagen del campo guid. Aunque si quieres la relativa al dominio original deberías volver a la tabla wp_postmeta y consultar con la ID de la imagen y el meta_key _wp_attached_file para obtener su meta_value que guarda la ruta relativa.

Todo esto puedes verlo en el enlace que te pasé sobre las tablas de WordPress:

http://codex.wordpress.org/Database_Description

Realmente no es difícil, todo se puede hacer en una sola consulta MySQL emparejando registros. Si no tienes muy claro como realizar consultas combinadas a varias tablas dilo y te aclaramos.

Suerte.
  #10 (permalink)  
Antiguo 01/06/2014, 13:26
 
Fecha de Ingreso: diciembre-2003
Mensajes: 474
Antigüedad: 21 años
Puntos: 5
Respuesta: post recientes de mi blog en mi web

Cita:
Iniciado por AlejandroGalvez Ver Mensaje
Me disculpo, no tenía mucho tiempo para responder (igual que ahora) y lo dejé todo un poco en el aire.

La información de las imágenes se almacena como un post en la tabla wp_posts y se pueden identificar puesto que su propiedad post_type guarda el valor attachment. Por tanto para obtener una imagen debes de:
  1. Con la ID del post puedes recuperar su meta (si existe) _thumbnail_id de la tabla wp_postmeta. Solo deberás recuperar el registro relacionándolo mediante la columna post_id = id del post acual y la columna meta_key = _thumbnail_id.
  2. Del registro deberás obtener la columna meta_value que guarda la ID de la imagen en la tabla wp_posts.
  3. Ahora que tienes la ID de la imagen destacada de tu post solo debes recuperar su información de la tabla wp_posts a través del campo ID y el campo post_type = attachment (para mayor seguridad, aunque con la ID absoluta no necesitarás esta comprobación).
  4. Puedes obtener la URL absoluta de la imagen del campo guid. Aunque si quieres la relativa al dominio original deberías volver a la tabla wp_postmeta y consultar con la ID de la imagen y el meta_key _wp_attached_file para obtener su meta_value que guarda la ruta relativa.

Todo esto puedes verlo en el enlace que te pasé sobre las tablas de WordPress:

http://codex.wordpress.org/Database_Description

Realmente no es difícil, todo se puede hacer en una sola consulta MySQL emparejando registros. Si no tienes muy claro como realizar consultas combinadas a varias tablas dilo y te aclaramos.

Suerte.
Gracias, me has puesto sobre la pista y ahora estoy trabajando con este código:
Código PHP:
SELECT a.post_title titlemax(c.guidimg_urla.ID id
FROM wp_posts  a 

LEFT JOIN
(select post_parentmax(post_date_gmt) as latest_image_date from wp_posts
where post_type
='attachment' GROUP BY post_parent
on a
.id=b.post_parent

LEFT JOIN wp_posts c
on c
.post_parent=a.id 
and c.post_type='attachment' 
and b.latest_image_date c.post_date_gmt where c.guid IS NOT NULL

GROUP BY a
.post_title ORDER BY a.ID  DESC limit 5 
El problema es que no sé cómo mostrar la URL de la imagen. Sé que es una tontería pero funciona perfecto en SQL y no sé qué campo debo mostrar en mi echo....

Gracias de nuevo.
  #11 (permalink)  
Antiguo 02/06/2014, 07:05
 
Fecha de Ingreso: diciembre-2003
Mensajes: 474
Antigüedad: 21 años
Puntos: 5
Respuesta: post recientes de mi blog en mi web

Solucionado con este código:
Código PHP:
SELECT
        p1
.*,
        
wm2.meta_value
    FROM 
        wp_posts p1
    LEFT JOIN 
        wp_postmeta wm1
        ON 
(
            
wm1.post_id p1.id 
            
AND wm1.meta_value IS NOT NULL
            
AND wm1.meta_key "_thumbnail_id"              
        
)
    
LEFT JOIN 
        wp_postmeta wm2
        ON 
(
            
wm1.meta_value wm2.post_id
            
AND wm2.meta_key "_wp_attached_file"
            
AND wm2.meta_value IS NOT NULL  
        
)
    
WHERE
        p1
.post_status="publish" 
        
AND p1.post_type="post" 
Gracias de nuevo.
  #12 (permalink)  
Antiguo 02/06/2014, 20:46
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 6 meses
Puntos: 832
Respuesta: post recientes de mi blog en mi web

Mi gente, no es necesario romperse tanto la cabeza. En el archivo externo escriban al principio:

Código PHP:
Ver original
  1. <?php require 'ruta/absoluta/a/wp-load.php' ?>

Y listo. A partir de ese momento se activan funciones y tags de WordPress y por lo tanto pueden trabajar en éste como si se tratase de un archivo de la plantilla.

PD: wp-load.php se encuentra en el directorio raiz de la instalación de WordPress.
  #13 (permalink)  
Antiguo 03/06/2014, 01:12
Avatar de AlejandroGalvez  
Fecha de Ingreso: noviembre-2013
Mensajes: 189
Antigüedad: 11 años, 1 mes
Puntos: 49
Respuesta: post recientes de mi blog en mi web

Me alegro que le hayas encontrado solución a tu consulta, no pude pasarme por aquí antes. Hay muchas otras formas de plantearla pero si te vale esa todo en orden pues.

Cita:
Iniciado por metacortex Ver Mensaje
Mi gente, no es necesario romperse tanto la cabeza. En el archivo externo escriban al principio:

Código PHP:
Ver original
  1. <?php require 'ruta/absoluta/a/wp-load.php' ?>

Y listo. A partir de ese momento se activan funciones y tags de WordPress y por lo tanto pueden trabajar en éste como si se tratase de un archivo de la plantilla.

PD: wp-load.php se encuentra en el directorio raiz de la instalación de WordPress.
Creo que en su primer mensaje dice que su página propia en html/php se encuentra "en otro dominio". Supongo que en otro hosting también o puede que en otra subcarpeta del mismo hosting, entonces si le valdría wp-load.php.
  #14 (permalink)  
Antiguo 03/06/2014, 02:13
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 6 meses
Puntos: 832
Respuesta: post recientes de mi blog en mi web

Tienes razón. Pasé por alto ese 'detalle'. Gracias por la aclaratoria.

Etiquetas: blog, php, post
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:46.