
Utilisation de l’existant sous WordPress par Rémi Corson
Pourquoi utiliser l’existant sous WordPress ?
Tout d’abord, simplement pour ne pas réinventer la roue et surtout puisque l’existant et d’une excellente qualité qu’il serait difficile d’égaler. Ensuite, logiquement pour gagner du temps, évidement pour une question de sécurité dans vos codes, également pour la compatibilité et enfin pour produire du code pérenne.
En trois lettres ; DRY ( Don’t Repeat Yourself! ). « Avant de développer, vérifiez toujours qu’une solution déjà existante ne soit à votre portée. »
1- Les tables SQL :
WordPress se compose de 11 tables SQL :
– wp_commentmeta // wp_comments // wp_links
– wp_options // wp_postmeta // wp_posts
– wp_terms // wp_term_relationship // wp_term_taxonomy
– wp_usermeta // wp_users
Avec cette structure vous n’avez pas besoin de tables supplémentaires pour 99% de vos projets.
Cette structure permet de bénéficier d’une structure pérenne, des fonctions existantes, d’une optimisation des requêtes, de l’utilisation des classes (tel que wpdb), de l’utilisation des APIs et de la connaissance des requêtes WordPress.
2- Les options par défaut
WordPress possède de nombreux paramètres par défaut. Ils sont à privilégier. La table wp_options existe depuis la version 1.5 et permet une standardisation et facilite le principe du CRUD.
Les fonctions de l’API Options:
• add_option() • add_site_option() • get_option() • get_site_option()
• update_option() • update_site_option() • delete_option() • delete_site_option() (Pour les multisites)
Les options incontournables :
• blogname • blogdescription • home / siteurl • admin_email • users_can_register
• comment_registration • date_format / time_format • start_of_week • default_role • gmt_offset
(à retrouver sur http://codex.wordpress.org/Option_Reference)
Les fonctions des l’API Transients (options temporaires) :
• set_transient() • set_site_transient() • get_transient()
• delete_transient() • get_site_transient() • delete_site_transient() (Pour les multisites)
3 -Les custom post types :
Les custom post types sont une manière de différencier vos contenus, par exemple : Recettes de cuisine / Livres / Voitures…
Il faut évitez de différencier des contenus par catégories qui elles servent uniquement à classer le contenu.
Les taxonomies sont la méthode de classement des CPTs (l’équivalant des catégories), par exemple :
Recettes de cuisine > Par difficulté, pays…
Sélection de livres > Par genre, auteur…
Voitures, Motos… > Par année, carburant…
Entreprises, magasins… > Par ville, activité…
Il existe différentes manières de créer des CPTs et des Taxonomies
• Les Générateur en ligne > Themergency
http://themergency.com/generators/wordpress-custom-post-types/
• Les Plugins > Easy Content
Type http://codecanyon.net/item/easy-custom-content-types-for- wordpress/234182
• Intégrés aux thèmes
• Les coder en dur
http://codex.wordpress.org/Post_Types#Custom_Types
4- Les requêtes avec wp_query
WP_Query est une classe qui génère l’objet $wp_query définissant la requête courante
Exemple :
// La Requête (peut être dans la boucle principale)
$query = new WP_Query( $args );
// La boucle
while ( $query->have_posts() ) :
$query->the_post();
echo <li> . get_the_title() . </li>;
endwhile;
// Restauration de la requête courante
wp_reset_query();
Exemple 2 : Requêtes par auteur
// Par author id (user_id)
$query = new WP_Query( author=1 );
$query = new WP_Query( author=4,5,8,7 );
$query = new WP_Query( author=-12 );
$query = new WP_Query( author=-12,4,5,8,7 );
// Par author_name (user_nicename)
$query = new WP_Query( author_name=remi );
Les paramètres de WP_Query :
Auteurs Mise en avant (sticky), Catégories, Champs Personnalisés, Mots Clé , Order / Order by,
Taxonomies, Mise en cache, Recherche ($_GET[‘s’]), Permission (user role), Article / Page,
Choix des champs, Statuts (publish, draft…), Date et Heure.
Tous ces paramètres sont cumulables (http://codex.wordpress.org/Class_Reference/WP_QueryWORDPRESS)
Différencier WP_QUERY et QUERY_POSTS :
WP_Query crée une nouvelle requête et query_posts modifie la requête courante
5- Les fonctions indispensables
Récupérer & afficher :
• the_title() • get_post_type() • the_excerpt() • get_post_format() • the_content()
• get_post_class() • the_date() the_time() • the_category() • the_permalink() • the_tags()
• the_post_thumbnail() • comments_number() • the_ID() • prev / next_post_link() • the_author() •get_post_meta()
Conditions :
• is_single() • is_category() • is_singular() • is_admin() • is_sticky() • is_home(),is_front_page()
• is_attachment() • is_404() • is_page() • wp_is_mobile() • is_page_template() • is_date(),is_archive()
• is_preview() • is_paged() • the_author() • is_plugin_active() • is_admin_bar_showing() • is_user_logged_in()
6- Les nonces
Les Nonces sont utilisés dans les formulaire sous WordPress afin de prévenir les erreurs et les attaques.
Chaque formulaire frontend DOIT contenir une vérification par nonce.
En pratique (création d’un formulaire) :
<!– Création d’un formulaire –>
<form id=»form_id» method=»POST» action=»»>
<input type=»hidden» name=»securite_nonce» value=»<?php echo wp_create_nonce(securite-nonce); ? >»/>
<input type=»submit» value=»Valider»/> </form>
Traitement du formulaire :
// Fonction de traitement du formulaire
function traitement_des_donnes() {
if( isset( $_POST[securite_nonce] ) ) { if( wp_verify_nonce( $_POST[securite_nonce], securite-nonce ) ) {
// Le formulaire est validé et sécurisé
} else { echo Erreur dans le formulaire; exit;
// le formulaire est refusé
} } } add_action(init, traitement_des_donnes);
Retrouvez Rémi Corson sur remicorson.com
WordCamp 2013, vous avez raté ça ?
1 commentaire
[…] Rémi Corson sur l’utilisation de l’existant sous WordPress […]