Le blog de Nukleo

CodeIgniter + WordPress : afficher les derniers posts

21 décembre 2010 dans Développement |

Ajouter un blog WordPress à un site conçu avec CodeIgniter est très simple. Récupérer les derniers posts de WordPress pour les afficher dans CodeIgniter l’est aussi, voici comment.

Préambule

Nous utiliserons une structure de permaliens assez classique sous la forme de « monsite.com/blog/le-nom-du-post ». Si ce n’est pas le cas, il faudra adapter la requete mysql dans le model de Codeigniter. Un petit tour dans le gestionnaire de base de données permettra aisément de repérer les colonnes à utiliser.

Le model

Comme souvent dans Codeigniter, le gros du travail se situe dans le model. Nous allons créer le fichier ‘application/models/blog_model.php’ qui contiendra ce qui suit (à noter que le code est lourdement commenté pour plus de précision) :

<?php
class Blog_model extends Model {
  function __construct() {
    parent::Model();
  }

  /**
   * Recupération des derniers posts de wordpress
   *
   * @param $count Le nombre de posts (par defaut : 5)
   */
  function get_latest_posts($count = 5) {
    // les colonnes à récupérer : à adapter à la structure des permaliens de WordPress
    $this->db->select('post_title, post_name');
    // on ne récupère que les posts qui sont publiés
    $this->db->where('post_status', 'publish');
    // on ne récupère que les posts
    $this->db->where('post_type', 'post');
    // nombre de posts à récupérer
    $this->db->limit($count);
    // ordre décroissant pour avoir les derniers posts en premier
    $this->db->order_by('ID', 'desc');

    // wp_posts = la table par défaut contenant les posts de WordPress : à adapter à votre configuration
    $query = $this->db->get('wp_posts');
    // on effectue la requete dont le résultat sera un objet. Si l'on veut un tableau on utilisera la fonction result_array()
    $data = $query->result();

    // renvoi des données au controller
    return $data;
  }
}

Le controlleur

Dans notre controller il suffira d’appeler la fonction ‘get_latest_posts()’ en attribuant sa valeur de retour à une entrée du tableau (array) des valeur transmises à la vue.

// si le model n'est pas en autoload, il faut le charger dans le controlleur
$this->load->model('blog_model');
// $data est le tableau de données transmis à la vue, $blog_posts sera la variable disponible dans la vue
// get_latest_posts(10) indique que nous voulons récupérer les 10 derniers posts
$data['blog_posts'] = $this->blog_model->get_latest_posts(10);
// on charge la vue et transmet les données à celle-ci
$this->load->view('ma_view', $data);

La vue

Finalement dans la vue il suffit de faire une boucle sur la variable $blog_posts pour afficher les X derniers posts de WordPress.

<div>
  <h2>Derniers articles du blog</h2>
    <ul>
      <?php foreach($blog_posts as $post) : ?>
      <li><a href="blog/<?php echo $post->post_name; ?>"><?php echo $post->post_title; ?></a></li>
     <?php endforeach; ?>
   </ul>
</div>

Mots-clés : , ,

Vous avez aimé l'article ? Partagez-le : 

Les commentaires sont fermés.