Wordcamp Paris 2013

60
WORDPRESS L’utilisation de l’existant dans le développement WordPress WordCamp Paris 2013 18 janv.

description

L'utilisation de l'existant lors du développement WordPress.

Transcript of Wordcamp Paris 2013

  • 1. WORDPRESSLutilisation de lexistant dans18 le dveloppement WordPressjanv. WordCamp Paris 2013

2. REMI CORSON Dveloppeur [email protected] Rmi CorsonWORDPRESSLutilisation de lexistant 3. CE QUE LON VA VOIRLes tables SQL Les fonctions indispensablesLes options par dfaut Les noncesLes Custom Post TypesLes fonctions mconnuesLes requtes WP_QueryWORDPRESSLutilisation de lexistant 4. POURQUOI ? Pour... Gagner du temps Scuriser vos codes Rendre compatible Produire du code prenne et...WORDPRESS Lutilisation de lexistant 5. NE PAS RINVENTER LA ROUE DRY (Dont Repeat Yourself)Avant de dvelopper, vriez toujours quune solution dj existante ne soit votre porte.WORDPRESSLutilisation de lexistant 6. CHAPITRE 1LES TABLES SQL 7. LES TABLES SQLWordPress se compose de 11 tables SQLWORDPRESS Lutilisation de lexistant 8. LES TABLES SQLwp_commentmetawp_commentswp_linksComment Meta Comments LinksChamps Meta lis Les informations Les liens (masqusau commentaires. de base despar defaut sous WP commentaires 3.5)WORDPRESS Lutilisation de lexistant 9. LES TABLES SQLwp_options wp_postmetawp_postsOptions Post MetaPostsContient tous les Contient les metaContient les articles,paramtres xes data des pages, cpt, menu,du site posts (post, media...page, cpt...)WORDPRESSLutilisation de lexistant 10. LES TABLES SQL wp_term_relationship omywp_termsswp_term_taxonTerms TermTerm TaxonomyEquivalent desRelationships Contient lescatgories et motsinformations desLiens entre posts/cls pour les posts entres de wp_termsliens et catgories/et les liensmots clsWORDPRESS Lutilisation de lexistant 11. LES TABLES SQLwp_usermetawp_usersUser Meta UsersContient toutes les Contient la listeinformations surdes utilisateursles utilisateursWORDPRESSLutilisation de lexistant 12. LES TABLES SQL Avec cette structure vous navez pas besoin de tables supplmentaires pour 99% de vos projets.Structure prenne Utilisation des classes(wpdb entre autres)Bncier des fonctionsexistantesUtilisation des APIsOptimisation desConnaissance derequtesWordPressWORDPRESS Lutilisation de lexistant 13. CHAPITRE 2LES OPTIONS 14. LES OPTIONS PAR DEFAUT WordPress possde de nombreux paramtres par dfaut. Ils sont privilgier. Cette tableexiste1.5depuis la Standardisation version CRUD facilit Table wp_optionsWORDPRESSLutilisation de lexistant 15. LES OPTIONS PAR DEFAUT Les fonctions de lAPI Options:add_option() add_site_option()get_option() get_site_option()update_option()update_site_option()delete_option()delete_site_option() Installations Multi-sitesWORDPRESS Lutilisation de lexistant 16. LES OPTIONS PAR DEFAUT En pratique: // Ajouter une option add_option( $option, $value = , $deprecated = , $autoload = yes ); // Supprimer une option delete_option( $option ); // Rcuprer la valeur dune option get_option( $option, $default = false ); // Mettre jour / recrer une option update_option( $option, $newvalue );WORDPRESS Lutilisation de lexistant 17. LES OPTIONS PAR DEFAUT Les options incontournablesblognamecomment_registrationblogdescription date_format / time_formathome / siteurlstart_of_weekadmin_email default_roleusers_can_registergmt_offset http://codex.wordpress.org/Option_ReferenceWORDPRESSLutilisation de lexistant 18. LES OPTIONS PAR DEFAUT En pratique: // Afficher une date echo date_i18n( get_option(date_format), strtotime( $date ) ); /* Affichera par exemple: - 18th Jan 2013date_i18n() sert - January 18, 2013la traduction dela date - Vendredi 18 Janv. - Vendredi 18 janvier - 18/01/2013 ... */WORDPRESS Lutilisation de lexistant 19. LES OPTIONS PAR DEFAUT get_bloginfo() & bloginfo() Pour rcuprer dautres types doptionsversiontemplate_urltext_direction template_directorystylesheet_url rss2_urlstylesheet_directory comments_rss2_url Provenance: fonctions de WordPressWORDPRESS Lutilisation de lexistant 20. LES OPTIONS PAR DEFAUT Les fonctions des lAPI Transients: Les options temporaires set_transient()set_site_transient() get_transient()get_site_transient() delete_transient() delete_site_transient()Installations Multi-sitesWORDPRESSLutilisation de lexistant 21. LES OPTIONS PAR DEFAUT En pratique: // Ajouter une option temporaire set_transient( $transient, $value, $expiration ); set_transient( last_tweet, $tweet, 60*60*12 ); // Rcuprer la valeur dune option temporaire get_transient( $transient ); get_transient( last_tweet ); $expiration est exprime ensecondes // Supprimer une option delete_transient( $transient ); delete_transient( last_tweet );WORDPRESSLutilisation de lexistant 22. CHAPITRE 3 LES CPT 23. LES CPT Les custom post types sont une manire de diffrencier vos contenus, par exemple:Recettes de cuisineEvitez de diffrencier des contenus par catgories.Slection de livres Les catgories servent Voitures, Motos... classer.Entreprises, magasins... Les CPT servent diffrencier.Stocks dans wp_postsWORDPRESS Lutilisation de lexistant 24. LES CPTInterface classique pour un Custom Post TypeWORDPRESS Lutilisation de lexistant 25. LES CPT Les taxonomies: la mthode de classement des CPTsRecettes de cuisine > Par difficult, pays...Slection de livres > Par genre, auteur...Voitures, Motos...> Par anne, carburant...Entreprises, magasins...> Par ville, activit...Equivalent aux catgoriesWORDPRESSLutilisation de lexistant 26. LES CPTInterface classique pour une taxonomieWORDPRESS Lutilisation de lexistant 27. LES CPT Crer des CPTs et des Taxonomies Gnrateur en ligne> Themergencyhttp://themergency.com/generators/wordpress-custom-post-types/ Plugins> Easy Content Typehttp://codecanyon.net/item/easy-custom-content-types-for-wordpress/234182 Intgrs aux thmes Les coder en dur http://codex.wordpress.org/Post_Types#Custom_TypesWORDPRESS Lutilisation de lexistant 28. LES CPTExemple avanc de CPTs: ajout de champs utilisateursWORDPRESS Lutilisation de lexistant 29. LES CPTLe rsultat sur la page ddition des utilisateursWORDPRESSLutilisation de lexistant 30. LES CPT En pratique, crer un CPT: add_action( init, create_post_type_car ); function create_post_type_car() {register_post_type( car,array(labels => array(name => __( Cars ),singular_name => __( Car )),public=> true,has_archive => true,rewrite=> array(slug => cars),)); }WORDPRESS Lutilisation de lexistant 31. LES CPT En pratique, crer un taxonomie: add_action( init, create_difficulty_taxonomy ); function create_ difficulty_taxonomy() {register_taxonomy(difficulty,recipe, // post, page, cpt...array( hierarchical => true, // tags or categories likelabel => __( Difficulty ), rewrite => array( slug => difficulty ) ))); }WORDPRESSLutilisation de lexistant 32. CHAPITRE 4 LES REQUTESAVEC WP_QUERY 33. WP_QUERY WP_Query est une classe qui gnre lobjet $wp_query dnissant la requte courante A B$wp_query dtermine le type de requteWORDPRESSLutilisation de lexistant 34. WP_QUERYLa hirarchie indexdes templates Archives Post Pagetagpost type media categoryIDSlug SINGLEPOST ID SLUG MIME TYPEIDSLUG DEFAULTTEMPLATE DEFAULTTEMPLATE QUELLE EST LA REQUTE COURANTE ?WORDPRESS Lutilisation de lexistant 35. WP_QUERY Mais cest a,cest trop simple !WORDPRESS Lutilisation de lexistant 36. WP_QUERYABC Etape AEtape BEtape C Limiter parLimiter par auteur Slectionner catgorie, ou paret meta eld uniquement taxonomie certains champsWORDPRESS Lutilisation de lexistant 37. WP_QUERY En pratique: // La Requte (peut tre dans la boucle principale) $query = new WP_Query( $args ); // La boucle Paramtres de while ( $query->have_posts() ): la requte$query->the_post();echo . get_the_title() . ; endwhile; // Restauration de la requte courante wp_reset_query();WORDPRESS Lutilisation de lexistant 38. WP_QUERY Exemple: Requtes 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 );WORDPRESS Lutilisation de lexistant 39. WP_QUERY Exemple: Requtes par catgories // Par category id $query = new WP_Query( cat=11,-14 ); // Par category_name (utiliser le slug) $query = new WP_Query( category_name=actualites ); // Par catgories cumules avec category_and (ET) $query = new WP_Query( array( category__and => array( 18, 14 ) ) ); // Par catgories cumules avec category_in (OU) $query = new WP_Query( array( category__in => array( 18, 14 ) ) ); // Par catgories cumules avec category_not_in (OU) $query = new WP_Query( array( category__in => ...WORDPRESS Lutilisation de lexistant 40. WP_QUERY Les paramtres de WP_Query:AuteursMise en avant (sticky)Catgories Champs PersonnalissMots Cl Order / Order byTaxonomies Mise en cacheRecherche ($_GET[s]) Permission (user role)Article / Page Choix des champsStatuts (publish, draft...)Date et HeureWORDPRESS Lutilisation de lexistant 41. WP_QUERYTous ces paramtressont cumulables http://codex.wordpress.org/Class_Reference/WP_QueryWORDPRESS Lutilisation de lexistant 42. WP_QUERY VS QUERY_POSTSWP_Query cre une nouvelle requte query_posts modie la requte couranteWORDPRESS Lutilisation de lexistant 43. CHAPITRE 5LES FONCTIONSINDISPENSABLES 44. LES FONCTIONS INDISPENSABLES Rcuprer & afficherthe_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()WORDPRESSLutilisation de lexistant 45. LES FONCTIONSINDISPENSABLES Conditions 1/2is_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()WORDPRESS Lutilisation de lexistant 46. LES FONCTIONS INDISPENSABLES Conditions 2/2is_admin_bar_showing() La plupart des marqueurs conditionnels retournentin_the_loop()True ou False.is_user_logged_in()email_exists()post_type_exists()is_active_widget()wp_script_is(),wp_style_is()WORDPRESS Lutilisation de lexistant 47. CHAPITRE 6 LES NONCES 48. LES NONCESLes Nonces sont utiliss dans les formulaire sous WordPress an de prvenir les erreurs et les attaquesWORDPRESSLutilisation de lexistant 49. LES NONCESChaque formulaire frontend DOIT contenir une vrication par nonceWORDPRESS Lutilisation de lexistant 50. LES NONCES En pratique: cration dun formulaire WORDPRESS Lutilisation de lexistant 51. LES NONCES En pratique: 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 scuris } else { echo Erreur dans le formulaire; exit; // le formulaire est refus }} } add_action(init, traitement_des_donnes);WORDPRESS Lutilisation de lexistant 52. CHAPITRE 7LES FONCTIONSMCONNUES 53. LES FONCTIONS MCONNUESwp_generate_password()Paramtres:$len: longueur du mot de passe$special_chars: utiliser ou pas des caractres spciaux$extra_special_chars: utiliser dautres caractres spciaux http://codex.wordpress.org/Function_Reference/wp_generate_passwordWORDPRESS Lutilisation de lexistant 54. LES FONCTIONS MCONNUESadd_query_arg()Paramtres:$param1: nouvelle cl (ou array)$param2: valeur de la nouvelle cl$old_query_or_uri: lancienne requte ($_SERVER[REQUEST_URI]) http://codex.wordpress.org/Function_Reference/add_query_argWORDPRESS Lutilisation de lexistant 55. LES FONCTIONS MCONNUESregister_post_status()Paramtres:$post_status: nom du nouveau status$args: $label: description du statut $public: utilisation en frontend ? $exclude_from_search: ne pas inclure dans la recherche $show_in_admin_all_list: afficher pour tout post type $show_in_admin_status_list: intgrer la liste $label_count: texte afficher en haut des tableaux http://codex.wordpress.org/Function_Reference/add_query_argWORDPRESS Lutilisation de lexistant 56. LES FONCTIONS MCONNUESregister_post_status()function custom_post_status_unread(){ register_post_status( nonlu, array( label => _x( Non lu, post ), public => true, exclude_from_search => false, show_in_admin_all_list => true, show_in_admin_status_list => true, label_count=> _n_noop( Non lu (%s), Non lu (%s) ), ) );}add_action( init, custom_post_status_unread ); http://codex.wordpress.org/Function_Reference/register_post_statusWORDPRESS Lutilisation de lexistant 57. LES FONCTIONSMCONNUESadd_thickbox()Voir le Codex WordPressVoir le contenu

Ce contenu est affich dans la lightbox!

http://codex.wordpress.org/Function_Reference/add_query_argWORDPRESS Lutilisation de lexistant 58. QUESTIONS ??WORDPRESS Lutilisation de lexistant 59. FINRendez-vous 13:00avec Gilles Vauvarin pour Dmystier WordPress Multisite WORDPRESSLutilisation de lexistant 60. MERCI !@remicorson remicorson.com