{"id":191,"date":"2011-11-04T16:33:03","date_gmt":"2011-11-04T14:33:03","guid":{"rendered":"http:\/\/www.davel.fr\/techblog\/?p=191"},"modified":"2011-11-04T16:33:03","modified_gmt":"2011-11-04T14:33:03","slug":"wordpress-multisite-plugins-et-base-de-donnees-le-cocktail-foire","status":"publish","type":"post","link":"https:\/\/www.davel.fr\/techblog\/2011\/11\/wordpress-multisite-plugins-et-base-de-donnees-le-cocktail-foire\/","title":{"rendered":"WordPress multisite plugins et base de donn\u00e9es : le cocktail foir\u00e9"},"content":{"rendered":"<p>Diantre que de mots clefs dans ce titre pompeux. C'est fait expr\u00e8s figurez-vous, parce que je ne doute pas qu'un jour quelqu'un tombe sur la m\u00eame merde que celle que j'ai eu la malchance de subir r\u00e9cemment et soit tr\u00e8s content de trouver cet article.<\/p>\n<p>D\u00e9j\u00e0 sachez que si vous n'utilisez pas l'<strong>option multisites de WordPress<\/strong>, ce que je vais dire ne vous int\u00e9ressera pas. A fortiori si vous n'utilisez pas du tout WordPress c'est encore plus le cas... non mais vous faites quoi \u00e0 lire cet article dans ce cas ? Allez vous trouver une activit\u00e9 sympa, le macram\u00e9 ou un truc du genre.<br \/>\n<!--more--><br \/>\nLorsqu'on a mis cette option en place, il devient possible d'<strong>activer les plugins \"pour le r\u00e9seau\"<\/strong> c'est \u00e0 dire de les activer par d\u00e9faut dans tous les 'sites' qui seront cr\u00e9\u00e9s par la suite. (Admin du r\u00e9seau > plugins) Une bonne id\u00e9e que voil\u00e0 non ?<\/p>\n<p>Et bin \u00e7a le serait si \u00e0 chaque cr\u00e9ation d'un nouveau 'site' la fonction register_activation_hook() \u00e9tait lanc\u00e9e mais non en fait non. Allez savoir pourquoi ils n'ont pas cru \u00e7a n\u00e9cessaire. Or si, comme c'\u00e9tait le cas pour moi, on fait appel \u00e0 la base de donn\u00e9es dans son plugin et qu'il faut une table sp\u00e9cifique par 'site' alors pour \u00eatre inform\u00e9 de ladite cr\u00e9ation c'est peau d'zob. Avouez que c'est completement con.<\/p>\n<p><strong>Une solution ? Oui deux<\/strong> avec chacune leurs avantages et inconv\u00e9nients.<\/p>\n<p>La premi\u00e8re consiste \u00e0 <strong>ne pas activer les plugins sur le r\u00e9seau mais 'site' par 'site'<\/strong>. \u00c7a fonctionne tr\u00e8s bien mais peut cr\u00e9er des soucis avec le th\u00e8me si d'aventure ils ne sont pas activ\u00e9s, \u00e0 cause d'un \u00e9diteur trop farceur par exemple.<\/p>\n<p>La seconde est l\u00e9g\u00e8rement plus lourde mais efficace : Il faut <strong>ajouter ce code <\/strong>\u00e0 chaque appel du plugin qui fait appel \u00e0 la base : <\/p>\n<pre lang=\"php\">\r\n$matable = $wpdb->prefix . 'matabledeplugin';\r\nif($wpdb->get_var(\"show tables like '\".$matable.\"'\") != $matable) {\r\n\t\/\/ la table n'existe pas, proc\u00e9der \u00e0 l'installation en SQL, CREATE tout \u00e7a...\r\n}\r\n<\/pre>\n<p><em>note: $wpdb->prefix est bien renseign\u00e9 pour pointer vers les tables d'un 'site' en particulier en question et non simplement de wordpress.<\/em><\/p>\n<p>\u00c7a fait <strong>une requ\u00eate en plus par appel de page<\/strong>, et \u00e7a peut \u00eatre relou pour un syst\u00e8me qui compte beaucoup de visites.<\/p>\n<p>\u00c0 vous de voir.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Diantre que de mots clefs dans ce titre pompeux. C&rsquo;est fait expr\u00e8s figurez-vous, parce que je ne doute pas qu&rsquo;un jour quelqu&rsquo;un tombe sur la m\u00eame merde que celle que j&rsquo;ai eu la malchance de subir r\u00e9cemment et soit tr\u00e8s content de trouver cet article. D\u00e9j\u00e0 sachez que si vous n&rsquo;utilisez pas l&rsquo;option multisites de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[44,43,16,42],"class_list":["post-191","post","type-post","status-publish","format-standard","hentry","category-divers","tag-base-de-donnees","tag-multisite","tag-plugin","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/www.davel.fr\/techblog\/wp-json\/wp\/v2\/posts\/191","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.davel.fr\/techblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.davel.fr\/techblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.davel.fr\/techblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.davel.fr\/techblog\/wp-json\/wp\/v2\/comments?post=191"}],"version-history":[{"count":7,"href":"https:\/\/www.davel.fr\/techblog\/wp-json\/wp\/v2\/posts\/191\/revisions"}],"predecessor-version":[{"id":256,"href":"https:\/\/www.davel.fr\/techblog\/wp-json\/wp\/v2\/posts\/191\/revisions\/256"}],"wp:attachment":[{"href":"https:\/\/www.davel.fr\/techblog\/wp-json\/wp\/v2\/media?parent=191"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.davel.fr\/techblog\/wp-json\/wp\/v2\/categories?post=191"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.davel.fr\/techblog\/wp-json\/wp\/v2\/tags?post=191"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}