{"id":667,"date":"2009-10-26T23:30:28","date_gmt":"2009-10-26T22:30:28","guid":{"rendered":"http:\/\/blogs.wittwer.fr\/whiler\/?p=667"},"modified":"2023-03-12T15:08:20","modified_gmt":"2023-03-12T14:08:20","slug":"wordpress-plugin-target-blank-for-external-site","status":"publish","type":"post","link":"https:\/\/blogs.wittwer.fr\/whiler\/2009\/10\/26\/wordpress-plugin-target-blank-for-external-site\/","title":{"rendered":"Ma premi\u00e8re extension WordPress"},"content":{"rendered":"<p>Ne voulant pas modifier des fichiers de <a href=\"http:\/\/fr.wikipedia.org\/wiki\/WordPress\" rel=\"glossary\" target=\"_blank\" title=\"Wikipedia, D&eacute;finition de&nbsp;: WordPress\" style=\"\" >WordPress<\/a><sup style=\"font-family: Georgia, Times New Roman, Serif; font-weight: bold; color: #AAAAAA\" ><em>W<\/em><\/sup> lui-m\u00eame pour garantir des migrations futures sans probl\u00e8me ni r\u00e9gression, je me suis lanc\u00e9 pour cr\u00e9er mon premier patch sous forme d&rsquo;extension en utilisant l'<a href=\"http:\/\/fr.wikipedia.org\/wiki\/Interface_de_programmation\" rel=\"glossary\" target=\"_blank\" title=\"Wikipedia, D&eacute;finition de&nbsp;: API\" style=\"\" >API<\/a><sup style=\"font-family: Georgia, Times New Roman, Serif; font-weight: bold; color: #AAAAAA\" ><em>W<\/em><\/sup> fournie.<\/p>\n<p>Aucun \u00e9cran d&rsquo;administration, juste la modification que je souhaitais, \u00e0 savoir&nbsp;:<\/p>\n<ul>\n<li>Ouvrir les liens des commentaires et de leurs auteurs dans de nouveaux onglets ou fen\u00eatres s&rsquo;ils ne pointent pas sur ce blog&#8230;<\/li>\n<\/ul>\n<p>Pour cela, j&rsquo;ai cr\u00e9\u00e9&nbsp;:<\/p>\n<ul>\n<li>un r\u00e9pertoire <em>whiler<\/em> dans le sous-r\u00e9pertoire des extensions&nbsp;: <Racine_de_WordPress>\/wp-content\/plugins\/whiler<\/li>\n<li>un fichier texte nomm\u00e9&nbsp;: <em>whiler_custom_stuffs.php<\/em><\/li>\n<\/ul>\n<p>Dans ce fichier, j&rsquo;ai cod\u00e9 le <a title=\"Archive zip du fichier whiler_custom_stuffs.php\" href=\"\/whiler\/wp-content\/uploads\/2009\/10\/whiler_custom_stuffs.zip\">script<\/a> suivant&nbsp;:<!--more--><\/p>\n<div class=\"codecolorer-container php dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;height:300px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/><\/div><\/td><td><div class=\"php codecolorer\"><span class=\"kw2\">&lt;?php<\/span><br \/>\n<span class=\"coMULTI\">\/*<br \/>\nPlugin Name: Whiler Custom Stuffs<br \/>\nPlugin URI: https:\/\/blogs.wittwer.fr\/whiler\/<br \/>\nDescription: Adds custom behaviors to my blog without modifying original files<br \/>\nVersion: 0.0.1<br \/>\nAuthor: Whiler<br \/>\nAuthor URI: https:\/\/william.wittwer.fr\/<br \/>\n*\/<\/span><br \/>\n<br \/>\n<span class=\"co4\">\/**<br \/>\n&nbsp;* Fonction ajoutant le target=&quot;_blank&quot; sur tous les sites externes<br \/>\n&nbsp;* @param string $text on the complete link HTML or author<br \/>\n&nbsp;* @return HTML<br \/>\n&nbsp;*\/<\/span><br \/>\n<span class=\"kw2\">function<\/span> AddTargetBlankFilteringFunction<span class=\"br0\">&#40;<\/span><span class=\"re0\">$text<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; <span class=\"kw1\">return<\/span> <a href=\"http:\/\/www.php.net\/preg_replace\"><span class=\"kw3\">preg_replace<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'\/href=[&quot;|\\']?(http:\\\/\\\/(?!blogs\\.wittwer\\.fr)([^&quot;\\']*))[&quot;|\\']?\/ui'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;href=&quot;<\/span>$<span class=\"nu19\">1<\/span><span class=\"st0\">&quot; title=&quot;<\/span>Site externe <span class=\"sy0\">:<\/span> $<span class=\"nu19\">1<\/span><span class=\"st0\">&quot; target=&quot;<\/span>_blank<span class=\"st0\">&quot;&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$text<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"co1\">\/\/Ajout du hook sur les articles<\/span><br \/>\nadd_filter<span class=\"br0\">&#40;<\/span> <span class=\"st_h\">'get_comment_author_link'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'AddTargetBlankFilteringFunction'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nadd_filter<span class=\"br0\">&#40;<\/span> <span class=\"st_h\">'get_comment_author_url_link'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'AddTargetBlankFilteringFunction'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nadd_filter<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'comment_text'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'AddTargetBlankFilteringFunction'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"sy1\">?&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>J&rsquo;ai ensuite simplement <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Upload\" rel=\"glossary\" target=\"_blank\" title=\"Wikipedia, D&eacute;finition de&nbsp;: upload\u00e9\" style=\"\" >upload\u00e9<\/a><sup style=\"font-family: Georgia, Times New Roman, Serif; font-weight: bold; color: #AAAAAA\" ><em>W<\/em><\/sup> le r\u00e9pertoire et son fichier fra\u00eechement cr\u00e9\u00e9s sur le serveur de mon h\u00e9bergeur via <a href=\"http:\/\/fr.wikipedia.org\/wiki\/File_Transfer_Protocol\" rel=\"glossary\" target=\"_blank\" title=\"Wikipedia, D&eacute;finition de&nbsp;: FTP\" style=\"\" >FTP<\/a><sup style=\"font-family: Georgia, Times New Roman, Serif; font-weight: bold; color: #AAAAAA\" ><em>W<\/em><\/sup>, puis activ\u00e9 l&rsquo;extension dans le panneau de contr\u00f4le des extensions install\u00e9es de l&rsquo;administration de WordPress&#8230; et la magie op\u00e9rait&nbsp;!<\/p>\n<div class=\"thanks_button_div\" \n                  style=\"float: right; margin-right: 10px; margin-top:10px;\"><div id=\"thanksButtonDiv_667_1\" style=\"background-image:url(https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/plugins\/thanks-you-counter-button\/images\/thanks_compact_brown1.png); background-repeat:no-repeat; float: left; display: inline;\"\n                onmouseover=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_667_1', true);\" \n                onmouseout=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_667_1', false);\"\n                onclick=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_667_1', false);\" >\n                <input type=\"button\" onclick=\"thankYouButtonClick(667, 'You left &ldquo;Thanks&rdquo; already for this post')\" value=\"Merci\u00a0 24\"\n                  class=\"thanks_button thanks_compact thanks_brown1\"\n                  style=\"  font-family: Verdana, Arial, Sans-Serif; font-size: 14px; font-weight: normal;; color:#00f;\"\n                  id=\"thanksButton_667_1\" title=\"Click to leave &ldquo;Thanks&rdquo; for this post\"\/>\n             <\/div><div id=\"ajax_loader_667_1\" style=\"display:inline;visibility: hidden;\"><img decoding=\"async\" alt=\"ajax loader\" src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/plugins\/thanks-you-counter-button\/images\/ajax-loader.gif\" \/><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Ne voulant pas modifier des fichiers de WordPress pour garantir des migrations futures sans probl\u00e8me ni r\u00e9gression, je me suis lanc\u00e9 pour cr\u00e9er mon premier patch sous forme d\u2019extension.<br \/>\nAucun \u00e9cran d\u2019administration, juste la modification que je souhaitais, \u00e0 savoir :<br \/>\n    * Ouvrir les liens des commentaires et de leurs auteurs dans de nouveaux onglets ou fen\u00eatres s\u2019ils ne pointent pas sur ce blog\u2026<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[6,9,11],"tags":[99,15,27,100,31,97,26,108,107],"class_list":["post-667","post","type-post","status-publish","format-standard","hentry","category-dev","category-php","category-web","tag-addons","tag-api","tag-coloration-syntaxique","tag-extensions","tag-hebergement","tag-mise-a-jour","tag-plugin","tag-script","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/667","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/comments?post=667"}],"version-history":[{"count":1,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/667\/revisions"}],"predecessor-version":[{"id":6407,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/667\/revisions\/6407"}],"wp:attachment":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/media?parent=667"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/categories?post=667"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/tags?post=667"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}