
Hoy vamos a ver cómo mostrar los últimos posts de tu blog, a veces nuestra web principal no está hecha con WordPress, y el blog es un añadido a nuestra web principal.
Y en ese caso quizás queramos mostrar los últimos posts de tu blog, para conseguir un buen interlinking y que Google nos tome en cuenta.
Conectar con la Base De Datos
El primer paso a realizar es tan simple como importante, debemos conectar con la base de datos donde tengamos nuestro WordPress.
Los datos de conexión, nos lo debería proporcionar nuestro proveedor del servicio ya sea desde el panel de administración de nuestro producto o bien sea por algún email que nos hayan enviado, o bien solicitandoselo a ellos por teléfono o email.
Una vez tengamos los datos de conexión deberemos hacer lo siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php define('HOST_NAME', 'host_de_nuestra_base_de_datos'); define('DB_NAME', 'nombre_de_nuestra_base_de_datos'); define('USERNAME_DB', 'usuario_de_base_de_datos'); define('PASSWORD_DB', 'contraseña_de_base_de_datos'); $db = null; try { $db = new PDO('mysql:host='.HOST_NAME.'; dbname='.DB_NAME, USERNAME_DB, PASSWORD_DB); } catch (PDOException $e) { echo "Error!: " . $e->getMessage() . "<br/>"; die(); } ?> |
Usaremos una conexión con PDO, y que las funciones como mysql_connect está totalmente obsoleta y anticuada.
Os he dejado el ejemplo, pero cada cual puede usar la conexión como quiera 🙂 simplemente quiero hacer el ejemplo completo.
Hacemos la consulta
Ahora generamos la consulta para acceder a los últimos posts.
1 2 3 4 5 6 7 8 9 10 11 | <?php $posts = $db->query(" SELECT post_title, post_name FROM wp_posts WHERE post_status = 'publish' AND post_type = 'post' ORDER By post_date DESC LIMIT 0,5 "); ?> |
En esta consulta, cogemos lo que es el título del post y el nombre del post, que es lo que a mi me hacía falta
Aunque también podríamos coger más datos, como el contenido del post (post_content), la fecha del post (post_date), hay más datos, pero estos creo que son los más importantes.
Pero yo solo cojo, el post_title y el post_name. El primero
La tabla a la que accedemos en este caso es: «wp_posts«.
Podría ser que al instalar tu WordPress, hubieras puesto otro tipo de sufijo o ninguno llamándose la tabla, simplemente: «posts«.
Puede ser que al instalar el WordPress, o con la instalación que os hayan hecho, se haya añadido un sufijo a las tablas de WordPress. Así que si por ejemplo habéis puesto como sufijo «blog» pues la tabla se llamará «blog_posts«.
Luego filtraremos por los posts que hayan sido publicados usando la condición «post_status = ‘publish’» ya que no creo que nos interese que la gente vea los posts que aún no hemos publicado.
Añadimos también la condición «post_type = ‘post’» donde estamos seleccionando que lo que mostremos sean tipo posts, ya que tenemos otras muchas opciones como:
- Revision
- Attachment
- Page
- Customize_changeset
Y seguro que alguno más…
Y aquí lo único que nos interesa es el post final, no queremos ni revisiones ni páginas.
Para acabar los he ordenado por fecha (post_date) de forma descendiente, de post más nuevo a más viejo.
Y por último limitamos la consulta a 5 posts, usando LIMIT 0,5, aunque cada cual puede poner ahí lo que quiera por supuesto.
Mostramos los últimos posts
Y ya por último y no menos importante pues mostraremos estos últimos 5 posts en nuestra web.
1 2 3 4 5 6 | <h2>Últimos posts:</h2> <ul> <?php foreach ($posts as $post) { ?> <li>- <a href="http://www.oyagum.com/articulos/<?php echo $post['post_name'];?>"><strong><?php echo $post['post_title'];?></strong></a></li> <?php } ?> </ul> |
Simplemente recorremos la variable donde tenemos el resultado de la consulta, y mostramos como queramos.
En mi caso he puesto un h2, anunciando el título de la sección y luego muestro los posts con un listado usando ul y li.
Para generar la url del enlace, cogemos la url principal de nuestro blog, en mi caso http://www.oyagum.com/articulos/ y le añadimos el valor de post_name, que es el nombre del enlace que usamos para el post.
Y usamos la variable post_title que es la que almacena el título de nuestro post.
Como veis, es bastante fácil y simple, espero que os haya servido y si algo no ha quedado claro, preguntad e intentaré explicarlo lo mejor posible.
Y recordad! No olvidéis comentar! Vuestro código y en el blog 😉
MM
Hola! Llevaba bastante tiempo buscando una solución para esta problemática y no la encontraba a no ser que fuera vía RSS, y no me convencía el resultado ni tener que instalar un plugin para ello… Así que, muchas gracias por este post!
Lo malo, que soy bastante inexperto en php y necesito más detalles… jejeje
Lo que necesito hacer es mostrar en la página de inicio un bloque de últimas noticias (que serían los últimos posts de otra instalación de WP)… Sé que para muchos será una pregunta de cajón, pero… dónde incorporo los dos primeros bloques de código php?
Muchas gracias!
Alberto
Buenas MM,
Primero darte las gracias por comentar en el blog y me alegro que te haya podido ayudar el post.
Y vamos con tu duda:
En un principio tienes que implementar los dos primeros bloques de código allí donde fueras a mostrar los últimos posts de WordPress y poner los datos de conexión de tu otra instalación de WordPress.
Lo que te puedes encontrar es que depende si son servidores distintos no te permita hacer una conexión de MySQL desde otro servidor distinto, ahí es donde te puede surgir el problema.
Pero en un principio simplemente metiendo ese código en el tuyo y metiendo los datos de tu conexión de WordPress, debería funcionarte.
Cualquier cosa me dices, un saludo 🙂
Alexa
Hola Alberto,
He estado intentando hacer esto que explicas en tu post por un buen rato. Afortunadamente, encontre tu post (el cual esta muy completo y claro) y te agradezco mucho por tomarte el tiempo de haberlo realizado.
Esta es la primera vez que hago este tipo de integracion, tengo una pagina en html y un blog de wordpress instalado en un subdominio. Sin embargo, cuando sigo tus pasos no logro que me muestre nada, en el lugar donde deberia mostrar los ultimos post me muestra esto: «; ?> query(» SELECT post_title, post_name FROM wp_posts WHERE post_status = ‘publish’ AND post_type = ‘post’ ORDER By post_date DESC LIMIT 0,5 «); ?>
Agregue los php en el div en el que quiero que muestre los posts. Se que estoy haciendo algo mal, pero no puedo saber que es, tengo muy poca experiencia trabajando con php y te agradeceria muchisimo si pudieras ayudarme a identificar el error.
Muchas Gracias!
Oyagum
Buenas,
Primero de todo agradecerte que hayas leído mi blog y todos tus halagos, y me alegro que lo encuentres bien explicado, ya que a veces me cuesta mucho expresarme 😉
Y segundo y lo más importante, vamos a ver tu problema, la verdad es que me es difícil poderte ayudar con tan poca información, intento ver con lo que me has pasado donde está el posible fallo, pero no acabo de verlo, tampoco me queda claro porque te sale ese error o a lo mejor es que el comentario lo ha cambiado.
Si me pudieras hacer llegar más info o parte de tu código (sin contraseñas ni nada) a mi correo oyagum@gmail.com estaría encantado de poder ayudarte.
A ver si puedes pasarme el código me lo miro y te comento el que.
Ya me dices algo, un saludo!