{"id":2122,"date":"2012-03-13T15:15:48","date_gmt":"2012-03-13T14:15:48","guid":{"rendered":"http:\/\/flaven.fr\/?p=2122"},"modified":"2013-09-24T05:41:28","modified_gmt":"2013-09-24T03:41:28","slug":"wordpress-plugin-class-programmation-orientee-objet-creer-un-plugin-wordpress-avec-des-class-selon-des-principes-de-programmation-orientee-objet","status":"publish","type":"post","link":"https:\/\/flaven.fr\/2012\/03\/wordpress-plugin-class-programmation-orientee-objet-creer-un-plugin-wordpress-avec-des-class-selon-des-principes-de-programmation-orientee-objet\/","title":{"rendered":"WordPress, Plugin, Class, Programmation orient\u00e9e objet  &#8211; Cr\u00e9er un plugin WordPress avec des Class selon des principes de programmation orient\u00e9e objet"},"content":{"rendered":"\n<p><!--  WordPress, Plugin, Class, Programmation orient\u00e9e objet  - Cr\u00e9er un plugin WordPress avec des Class selon des principes de programmation orient\u00e9e objet --><br \/>\n<!--  PHP, WordPress , WordPress, Plugin, Class, Programmation orient\u00e9e objet, OOP --><\/p>\n<p>L&#8217;id\u00e9e est au lieu de coder \u00e0 la petite semaine un plugin wordpress, on va utiliser des techniques de programmation orient\u00e9 objet ou OOP (Object-oriented programming) afin d&#8217;avoir une meilleure portabilit\u00e9 et gestion du code. C&#8217;est vivement recommand\u00e9 lorsque vous travaill\u00e9 avec d&#8217;autres d\u00e9veloppeurs notamment.<!--more--><\/p>\n<h4>Une <code>class<\/code> pour votre plugin<\/h4>\n<p>On n&#8217;a bien sur pas la pr\u00e9tention de faire un cours complet sur la programmation orient\u00e9 objet. Ce qu&#8217;il faut retenir, c&#8217;est que les classes PHP ont une fonction constructeur, <code>__construct<\/code>, qui est ex\u00e9cut\u00e9 d\u00e8s que une nouvelle instance d&#8217;une classe est instanci\u00e9e. Tous les &#8220;hooks&#8221; de WordPress et les &#8220;filters&#8221; seront enregistr\u00e9s sous le contr\u00f4le du constructeur de notre class de notre plugin. On se limite \u00e0 la cr\u00e9ation d&#8217;un &#8220;shorcode&#8221; <code>[hecube_welcome_msg]<\/code> qui sera remplac\u00e9 par un message d&#8217;accueil tout simple. La fonction add_shortcode() function\/hook doit \u00eatre plac\u00e9 sous la fonction du constructeur. Il ne reste plus qu&#8217;\u00e0 instantier la <code>class<\/code> nomm\u00e9 <code>He3wpoop<\/code> et voil\u00e0 !<\/p>\n<p><b>Bien sur, ce n&#8217;est qu&#8217;un plugin tout simple mais pour toute personne qui souhaite se consacrer au d\u00e9veloppement de plugin sous WP, on ne peut que vous encouragez \u00e0 fonctionner en Class pour le d\u00e9veloppement de vos plugins.<\/b><\/p>\n<p><b>Le code source du plugin <code>he3wpoop.php<\/code><\/b><\/p>\n<pre lang=\"php\" escaped=\"true\">\r\n\t&lt;?php\r\n\t\/*\r\n\tPlugin Name: he3wpoop\r\n\tPlugin URI: http:\/\/hecube.net\r\n\tDescription: test for OOP plugin WP\r\n\tVersion: 1.0\r\n\tAuthor: Hecube\r\n\tAuthor URI: http:\/\/hecube.net\r\n\t*\/\r\n\r\n\t\t\tclass He3wpoop {\r\n\r\n\t\t\t\t\tvar $pluginPath;\r\n\t\t\t\t\tvar $pluginUrl;\r\n\r\n\t\t\t\t\tpublic function __construct()\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\/\/ Set Plugin Path\r\n\t\t\t\t\t\t$this-&gt;pluginPath = dirname(__FILE__);\r\n\r\n\t\t\t\t\t\t\/\/ Set Plugin URL\r\n\t\t\t\t\t\t$this-&gt;pluginUrl = WP_PLUGIN_URL . '\/he3wpoop';\r\n\r\n\t\t\t\t\t\tadd_shortcode('hecube_welcome_msg', array($this, 'he3wpoopshortcode'));\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tpublic function he3wpoopshortcode () {\r\n\t\t\t\t\t\tprint ('&lt;h1&gt;Welcome on &lt;code&gt;http:\/\/social.hecube.net\/&lt;\/code&gt;&lt;\/h1&gt;');\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t}\/\/EOC\r\n\r\n\t\t\t\t\/* Instantiate the class *\/\r\n\t\t\t\t$he3wpoop_value = new He3wpoop;\r\n\r\n\r\n\r\n\t?&gt;\r\n\t\r\n<\/pre>\n<p><b>Installation du plugin <code>he3wpoop.php<\/code><\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2012\/03\/wp_plugin_class_1.jpg\" alt=\"Wordpress, Plugin, Class, Programmation orient\u00e9e objet  - Cr\u00e9er un plugin WordPress avec des Class selon des principes de programmation orient\u00e9e objet\" width=\"500\" height=\"265\" \/><\/p>\n<p><b>Copie du shortcode <code>hecube_welcome_msg<\/code><\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2012\/03\/wp_plugin_class_2.jpg\" alt=\"Wordpress, Plugin, Class, Programmation orient\u00e9e objet  - Cr\u00e9er un plugin WordPress avec des Class selon des principes de programmation orient\u00e9e objet\" width=\"500\" height=\"265\" \/><\/p>\n<p><b>Le r\u00e9sultat dans l&#8217;article du plugin <code>he3wpoop.php<\/code><\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2012\/03\/wp_plugin_class_3.jpg\" alt=\"Wordpress, Plugin, Class, Programmation orient\u00e9e objet  - Cr\u00e9er un plugin WordPress avec des Class selon des principes de programmation orient\u00e9e objet\" width=\"500\" height=\"265\" \/><\/p>\n<h4>Un vrai tutorial sur un plugin b\u00e2ti sur une <code>Class<\/code><\/h4>\n<p>On vous invite \u00e0 d\u00e9couvrir cette excellent article sur <code><a href=\"http:\/\/net.tutsplus.com\/tutorials\/wordpress\/create-wordpress-plugins-with-oop-techniques\/\" target=\"_blank\">http:\/\/net.tutsplus.com\/tutorials\/wordpress\/create-wordpress-plugins-with-oop-techniques\/<\/a><\/code> qui vous presente de A \u00e0 Z comment faire un plugin relativement avanc\u00e9 avec la REST API de Dribbble. Plugin qui permet en plus d&#8217;ajouter un shortcode pour les articles et les widgets et au sein du th\u00e8me selon la forme :<\/p>\n<pre lang=\"html\">\r\n[dribble user=\"JustinMezzell\" images=\"5\" width=\"100\" height=\"100\" caption=\"true\"]\r\n<\/pre>\n<h2>En savoir plus<\/h2>\n<ul>\n<li>WordPress Coding Standards<br \/>\n\t<a href=\"http:\/\/codex.wordpress.org\/WordPress_Coding_Standards\" target=\"_blank\">http:\/\/codex.wordpress.org\/WordPress_Coding_Standards<\/a><\/li>\n<li>Excellent tutorial en anglais sur OOP porgraming dans WordPress<br \/>\n\t<a href=\"http:\/\/net.tutsplus.com\/tutorials\/wordpress\/create-wordpress-plugins-with-oop-techniques\/\" target=\"_blank\">http:\/\/net.tutsplus.com\/tutorials\/wordpress\/create-wordpress-plugins-with-oop-techniques\/<\/a><\/li>\n<li>Writing a WordPress Plugin Using Classes<br \/>\n\t<a href=\"link\" target=\"_blank\">http:\/\/w3prodigy.com\/web-production\/behind-wordpress\/php-classes-wordpress-plugin\/<\/a><\/li>\n<li>Structure des plugins WordPress<br \/>\n\t<a href=\"link\" target=\"_blank\">http:\/\/www.ligams.com\/Publications\/Wordpress\/Structure-des-plugins-Wordpress<\/a><\/li>\n<li>Use Classes in your WordPress plugins to increase code portability and reduce name conflicts<br \/>\n\t<a href=\"http:\/\/striderweb.com\/nerdaphernalia\/2008\/07\/use-classes-in-your-wordpress-plugins\/\" target=\"_blank\">http:\/\/striderweb.com\/nerdaphernalia\/2008\/07\/use-classes-in-your-wordpress-plugins\/<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>L&#8217;id\u00e9e est au lieu de coder \u00e0 la petite semaine un plugin wordpress, on va utiliser des techniques de programmation orient\u00e9 objet ou OOP (Object-oriented&hellip; <\/p>\n<p class=\"text-center\"><a href=\"https:\/\/flaven.fr\/2012\/03\/wordpress-plugin-class-programmation-orientee-objet-creer-un-plugin-wordpress-avec-des-class-selon-des-principes-de-programmation-orientee-objet\/\" class=\"more-link\">Continue reading &rarr; <span class=\"screen-reader-text\">WordPress, Plugin, Class, Programmation orient\u00e9e objet  &#8211; Cr\u00e9er un plugin WordPress avec des Class selon des principes de programmation orient\u00e9e objet<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":9405,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"bf_ai_meta_description":"Cr\u00e9ez un plugin WordPress avec des classes en programmation orient\u00e9e objet. Am\u00e9liorez la portabilit\u00e9 et la gestion du code avec des techniques OOP.","bf_ai_og_title":"Cr\u00e9er un plugin WordPress avec des classes","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[3444,3447,3449,3435,3452],"tags":[422,246,20,106,423,2223],"class_list":["post-2122","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming-databases","category-technology-trends","category-tutorials-how-to","category-web-development","category-wordpress-cms","tag-class","tag-oop","tag-php","tag-plugin","tag-programmation-orientee-objet","tag-wordpress"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3Vuhl-ye","jetpack_featured_media_url":"https:\/\/flaven.fr\/wp-content\/uploads\/2012\/03\/wp_logo_generic_bf.jpg","_links":{"self":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/2122","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/comments?post=2122"}],"version-history":[{"count":1,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/2122\/revisions"}],"predecessor-version":[{"id":9406,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/2122\/revisions\/9406"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media\/9405"}],"wp:attachment":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media?parent=2122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/categories?post=2122"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/tags?post=2122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}