Comment utiliser le contexte WordPress sur des pages externes ?

Article publié par le 3 déc 2011 dans Wordpress | 0 commentaire

Comment utiliser le contexte WordPress sur des pages externes ?

Le contexte

Dans le cadre de sites WordPress interagissant avec le monde extérieur, il est parfois souhaitable de récupérer le contexte WordPress pour réaliser un traitement sur une page qui ne fait pas partie du CMS. Un exemple : réaliser un export CSV des utilisateurs, accessible dans le back-office. Comment faire ?

Imaginons que vous souhaitez offrir à vos administrateurs une option d’export des utilisateurs enregistrés. Vous définissez dans votre function.php le menu correspondant (dans le menu utilisateur : consultez le codex pour plus d’informations sur add_submenu_page) :

// Add administration items in the admin panel
    function wp_counter_pages() {
            add_submenu_page( 'users.php', 'Export utilisateurs', 'Export','administrator','export_admin','export_admin');
    }
    add_action( 'admin_menu', 'wp_counter_pages' );

Vous voyez où je veux en venir : la fonction export_admin (5ème paramètre de add_submenu_page) va permettre d’afficher le formulaire d’action dans le back-office. Avec ce formulaire, nous allons faire appel (via la méthode POST) à un fichier externe qui réalisera l’export pour nous :

<div class="wrap">
<h2>Export des utilisateurs</h2>
Une option d'export vous est offerte ici :
<div style="margin: 0 auto;">
<form style="float: left; margin: 10px;" action="../wp-content/themes/your-theme/functions/export.php" method="post">
<input class="button" style="width: 200px;" type="submit" value="Export complet" />
</form>
</div>
</div>

Comment intégrer le contexte WordPress?

Ce fichier qui va réaliser l’export (export.php, qui est la valeur de l’attribut « action » du formulaire) est totalement hors du contexte WordPress. Impossible donc d’accéder aux classes et objets WordPress qui nous permettraient d’aller interroger la base. Pour pallier à cela, et notammet accéder à la base, il vous faut inclure :

  • Le fichier wp-config.php
  • Le fichier wp-load.php
  • Le fichier wp-db.php
Cela donne (partant du principe que votre fichier export.php se trouve dans un sous-dossier « functions » de votre thème):
    header("Content-type: application/vnd.ms-excel");
    header("Content-disposition: attachment; filename=\"Utilisateurs_non_finalises.csv\"");

    require_once('global_functions.php');
    /** Load WordPress Bootstrap in order to use classes*/
    include_once('../../../../wp-config.php');
    include_once('../../../../wp-load.php');
    include_once('../../../../wp-includes/wp-db.php');

Vous voilà à-même d’exécuter n’importe quel code faisant appel à WordPress dans un fichier externe au CMS ! N’hésitez pas à réagir ci-dessous via les commentaires

A propos de Nicolas BONNIOT

Titulaire d'un DUT Génie Electrique & Informatique Industrielle et d'un diplôme d'ingénieur généraliste ECAM Rennes, Nicolas a débuté sa carrière dans les systèmes d'information (recette, développement client lourds, flux...) puis s'est spécialisé à présent dans le développement web (boutiques, sites vitrines, CMS...). Un fort intérêt personnel pour l'écologie et l'écriture l'ont rapidement conduit vers le blogging puis la pige magazine, notamment sur l'éco-construction et les énergies renouvelables. Il a par ailleurs toujours voulu garder une pluri-disciplinarité qui s'apparente fortement à la mécatronique : conception mécanique, électronique et informatique pour répondre à des besoins/fonctions d'automatisation simples & complexes.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Connect with Facebook

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>