Enjoy A New Student Discount All 55,000 Courses on sale for Only $12.99

Ends in 05h 23m 49s

Yii y WordPress

Tiempo atrás estuve mezclando ambos mundos con bastante éxito, y tras un pequeño intermedio causado por un cambio en la versión de WordPress, he podido volver a leer la BBDD de WordPress desde yii y os comento como.

Ante todo, establezcamos el objetivo:

La web de RecursosFormacion, en la que estáis, tiene una parte desarrollada sobre el framework yii, que se encarga de la mayor parte de funcionalidades, y aparte, tiene un blog implementado con WordPress.

Ese planteamiento, me permite mezclar lo mejor de ambos mundos; dejo la responsabilidad de toda la estructura blog, con sus artículos, sus comentarios, sus listas,…. a un paquete ampliamente acreditado como es WordPress, y me libero de su rigidez en el resto del desarrollo, permitiéndome incorporar una GUI muy interesante para los libros, una gestión muy sencilla de las utilidades, y mas…

En la primera pagina, se me ocurrió poner una lista de los artículos de WordPress mas leídos, (exactamente, los mas comentados), y me empeñe en que fuera la lógica de WordPress que me facilitara tal información.

La función que me permite hacerlo, sacada de cualquier pagina de Internet es:

function popularPosts($num) {

global $wpdb;
$popular=»»;
$sql=»SELECT comment_count, ID, post_title FROM $wpdb->posts «;
$sql.=»WHERE post_type=’post’ AND post_status = ‘publish'»;
$sql.=» ORDER BY comment_count DESC LIMIT $num «;
$posts = $wpdb->get_results($sql );
$popular = ‘<ul>’;

foreach ($posts as $post) {
$id = $post->ID;
$title = $post->post_title;
$count = $post->comment_count;
if ($count != 0) {
$popular .= ‘<li>’;
$popular .= ‘href=»‘ . get_permalink($id) . ‘» title=»‘ . $title . ‘»>’ . $title . ‘ ‘;
$popular .= ‘</li>’;
}
}
$popular .= ‘</ul>’;

return $popular;
}

El problema reside en conseguir disponer de los objetos de WordPress como $wpdb conectado a la BBDD correcta,….. y eso se puede lograr anteponiendo a la funcion las siguientes lineas:

require_once (dirname(DOCUMENT_ROOT).DS.’rf_resources’.DS.’rf_config.php’);
spl_autoload_unregister(array(‘YiiBase’, ‘autoload’)); // Disable Yii autoloader
//—–cargando wordpress
define(‘WP_USE_THEMES’, false);
global $wp, $wp_query, $wp_the_query, $wp_rewrite, $wp_did_header;

require_once( DOCUMENT_ROOT.’wordpress/wp-load.php’ );

//————-fin de la carga de worpress

spl_autoload_register(array(‘YiiBase’, ‘autoload’)); // Enable Yii autoloader

En la primera linea, cargo un fichero de configuración mio donde tengo los datos de nombre de la BBDD, usuario, y contraseña, y que es el mismo fichero que utiliza la carpeta WORPRESS.

A continuación, desconecto la característica de autoload de Yii para evitar incidencias con wp

En las tres lineas siguientes arranco wordpress, y cargo todas sus variables

Luego solo me queda volver a activar el autoload de Yii para que todo siga funcionando

Todo este código, lo tengo en un fichero del que hago un include, y cuando quiero la lista de artículos, solo tengo que llamar a la función popularPosts($num) indicando el numero de tirulos que quiero

Deja un comentario

/*Si te ha gustado el artículo
no dudes en compartirlo*/

Facebook
Twitter
LinkedIn

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies

Ver mi IP

Ver ip de mi máquina
tipo valor
Ip: 52.90.40.84
Proxy: 52.90.40.84
Remote host: ec2-52-90-40-84.compute-1.amazonaws.com
Remote port: 33796
** 52.90.40.84