{"id":230454,"date":"2022-12-10T14:53:00","date_gmt":"2022-12-10T11:53:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230454"},"modified":"2022-12-07T12:07:36","modified_gmt":"2022-12-07T09:07:36","slug":"alternatiiv-wordpressi-template_redirect-konksule","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/alternatiiv-wordpressi-template_redirect-konksule\/","title":{"rendered":"Alternatiiv WordPressi template_redirect konksule"},"content":{"rendered":"\n<p>Suurem osa t\u00f6\u00f6st, mida ma praegu teen, keskendub kohandatud pistikprogrammidele v\u00f5i utiliitidele, mis t\u00f6\u00f6tavad WordPressi peal.<\/p>\n<p>Kui m\u00f5tleksite, kui palju minu loodud projekte on kokku pandud, vaataksite alusena \u00fcle WordPressi (ja k\u00f5ik selle, mis sellega kaasneb) ning seej\u00e4rel on koodil kiht, mis suhtleb WordPressiga ja mis v\u00f5ib suhelda. kolmanda osapoole API-dega.<\/p>\n<p>Seda tehes on aga sageli olemas esiotsa komponent, mis n\u00f5uab teabe mallidesse renderdamist. Kuigi WordPressi mallide loomine ei ole oma olemuselt keeruline (kuigi ma soovin, et meil oleks rohkem kui mallisildid \u2013 n\u00e4iteks mallimootor, see on teine \u200b\u200bpostitus), arvan, et tasub vaadata paari viisi, kuidas saaksime kohandatud mallidega hakkama saada. malle, mille me komplekteerisime pistikprogrammidega.<\/p>\n<p>\u00dcks esimesi k\u00fcsimusi, mis selle v\u00e4itega sageli t\u00f5statatakse, on aga<\/p>\n<blockquote>\n<p>Miks peaksite lisama pistikprogrammi kohandatud malle?<\/p>\n<\/blockquote>\n<p>Ja ma saan sellest m\u00f5nel tasandil aru.<\/p>\n<ol>\n<li>Mallide hoidmine pistikprogrammis h\u00e4gustab veidi jooni teemade ja pistikprogrammide vahel, eriti kui j\u00e4tate teemad esitluse jaoks ja pistikprogrammid \u00e4riloogika jaoks,<\/li>\n<li>Kui paluda kasutajatel teemafaile \u00fchest kohast teise kopeerida, on kasutuskogemus halb.<\/li>\n<\/ol>\n<p>Kuid \u00fclaltoodud juhtudel on m\u00f5ned \u00fcmberl\u00fckkamised v\u00f5i v\u00f5ib-olla otsesed erandid.<\/p>\n<h2>WordPressi template_redirect Hook<\/h2>\n<p>Enne kui r\u00e4\u00e4gin WordPressi <a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Action_Reference\/template_redirect\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">template_redirect<\/a> konksust, tahan natuke r\u00e4\u00e4kida \u00fclalmainitud punktidest.<\/p>\n<h3>1 Pluginate mallid<\/h3>\n<p>Kui loote kohandatud pistikprogrammi, mis liidestub nii WordPressi kui ka kolmanda osapoole API-ga v\u00f5i mis kasutab teatud t\u00fc\u00fcpi hoidlate, tehaste, mudelite ja vaadete kombinatsiooni, peate selle teabe kuvama esik\u00fcljel. -end ja see peab olema teemaagnostiline.<\/p>\n<p>See ei t\u00e4henda, et keegi ei saaks lehel olevaid elemente stiilida v\u00f5i malli oma t\u00f6\u00f6sse lisada, kuid see t\u00e4hendab, et pistikprogramm peaks andma kasutajale renderdatava teabe p\u00f5hitaseme.<\/p>\n<h3>2 Kasutajatel failide kopeerimiseks palumine on halb<\/h3>\n<p>Pidage meeles loosungit, mida Apple kunagi ja sageli reklaamis kui &quot; <strong><a href=\"http:\/\/macdailynews.com\/2017\/12\/19\/at-tim-cooks-apple-steve-jobs-is-long-gone-and-so-is-the-it-just-works-ethos\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">See lihtsalt t\u00f6\u00f6tab?<\/a><\/strong> &quot; Kuigi see ei pruugi olla midagi, mida nad nii palju v\u00e4lja pajatasid kui kunagi varem (kui \u00fcldse, siis enam), meeldib mulle m\u00f5te, et kasutaja jaoks on &quot;lihtsalt t\u00f6\u00f6d&quot; ja see on midagi, mille poole ma oma tegevuses p\u00fc\u00fcan. t\u00f6\u00f6d.<\/p>\n<p>Seega, kui tegemist on pistikprogrammide jaoks kohandatud mallide v\u00f5i vaadete loomisega, ei taha ma n\u00f5uda, et kasutaja peaks faile kopeerima. Ma lihtsalt tahan, et nad:<\/p>\n<ol>\n<li>installige pistikprogramm,<\/li>\n<li>kl\u00f5psake aktiveeri.<\/li>\n<\/ol>\n<p>Ja see ongi k\u00f5ik. \u00dclej\u00e4\u00e4nu peaks olema kas iseenesestm\u00f5istetav v\u00f5i h\u00e4sti dokumenteeritud.<\/p>\n<h2>Tagasi Konksu juurde<\/h2>\n<p>Olgu, oletame hetkeks, et oleme loonud plugina, mis sisaldab mitmeid p\u00f5himalle (v\u00f5i vaateid olenevalt kasutatavast keelepruugist) ja et mallid tuleb kirjutada aktiivse teema kataloogi juure.<\/p>\n<p>V\u00f5ite kasutada konksu <strong><a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Action_Reference\/template_redirect\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">template_redirect (ja paljud populaarsed pistikprogrammid teevad seda).<\/a><\/strong> Selle kohta saate rohkem lugeda siit, kuid selle sisu on j\u00e4rgmine:<\/p>\n<blockquote>\n<p>See toimingukonks k\u00e4ivitatakse vahetult enne, kui WordPress m\u00e4\u00e4rab, millist mallilehte laadida. See on hea konks, mida kasutada, kui peate tegema \u00fcmbersuunamise, teades t\u00e4ielikult p\u00e4ringu saanud sisu.<\/p>\n<\/blockquote>\n<p>Ja, et olla selge, ma ei heiduta seda konksu kasutamast. Pakun lihtsalt alternatiivi. Ja see on see (nagu see peaks toimima j\u00e4rgmiselt):<\/p>\n<ol>\n<li>aktiveerige pistikprogramm,<\/li>\n<li>leidke aktiivne teema,<\/li>\n<li>kui neid veel pole, kopeerige mallifailid pistikprogrammist aktiivse teema juurkataloogi<\/li>\n<\/ol>\n<p>Viimane samm on kriitiline, sest kui mallifailid on olemas, on oluline neid mitte \u00fcle kirjutada peamiselt seet\u00f5ttu, et kasutaja oleks v\u00f5inud oma kohandused kirjutada.<\/p>\n<p>Seda <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/04887ee3a384f10ce6eac00d52e2dfb8#file-00-copy-templates-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">arvestades saate seda teha \u00fche funktsiooniga<\/a><\/strong> (koos kommentaaridega, mis n\u00e4itavad, mida te kasutate).<\/p>\n<pre><code>&lt;?php\n\nadd_action('plugins_loaded', __NAMESPACE__. 'acmeCopyTemplates');\n\/**\n * Copies the template files from the `assets\/templates` directory to the root directory \n * of the currently active theme (if they do not already exist).\n *\/\nfunction acmeCopyTemplates()\n{\n    \/\/ Find the currently active theme.\n    $activeThemeDir = get_template_directory();\n\n    \/**\n     * Read all of the template files from assets\/templates into an array but\n     * exclude the '.' and the '..' from the array.\n     *\/\n    $templates = array_slice(scandir(dirname(__FILE__).'\/assets\/templates'), 2);\n\n    \/**\n     * Now copy all of these files to the active theme directory.\n     * If the file already exists, then don't do it.\n     *\/\n    foreach ($templates as $template) {\n        if (!file_exists($destination = trailingslashit($activeThemeDir).$template)) {\n            continue;\n        }\n\n        $source = dirname(__FILE__).'\/assets\/templates\/'.$template;\n        $destination = trailingslashit($activeThemeDir).$template;\n\n        copy($source, $destination);\n    }\n}\n<\/code><\/pre>\n<p>Pange t\u00e4hele, et see kasutab mitmeid PHP funktsioone. Nimelt:<\/p>\n<ul>\n<li><strong><a href=\"https:\/\/php.net\/manual\/en\/function.array-slice.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">array_slice<\/a><\/strong><\/li>\n<li><strong><a href=\"https:\/\/php.net\/manual\/en\/function.scandir.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">skandir<\/a><\/strong><\/li>\n<li><strong><a href=\"https:\/\/php.net\/manual\/en\/function.dirname.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dirname<\/a><\/strong><\/li>\n<li><strong><a href=\"https:\/\/php.net\/manual\/en\/function.file-exists.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">fail_olemas<\/a><\/strong><\/li>\n<li><strong><a href=\"https:\/\/php.net\/manual\/en\/function.copy.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kopeerida<\/a><\/strong><\/li>\n<\/ul>\n<p>K\u00f5ik need on minu arvates k\u00e4ep\u00e4rased ja olulised teada, olenemata nende kasutamise olemusest.<\/p>\n<h2>Kas v\u00f5\u00f5rustajad toetavad seda?<\/h2>\n<p>M\u00f5ned v\u00f5\u00f5rustajad teevad seda. Ma tean kindlalt, et sellised hostid nagu <strong><a href=\"https:\/\/wpengine.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WPEngine<\/a><\/strong> seda ei tee ja see pole ka hosti kriitika. M\u00f5ned teevad seda turvakaalutlustel; teised lubavad seda, kuid see ei t\u00e4henda, et nad on v\u00e4hem turvalised \u2013 see t\u00e4hendab lihtsalt seda, et nende infrastruktuur on seadistatud teisiti.<\/p>\n<p>L\u00f5ppkokkuv\u00f5ttes n\u00e4itab see, et on ka teisi viise, kuidas pistikprogrammi kasutamisel malle kasutajatele k\u00e4ttesaadavaks teha, kuid see pole ainus viis ja see ei pruugi alati t\u00f6\u00f6tada.<\/p>\n<p>Valikute olemasolu on aga hea, eriti kui eelistate oma pistikprogrammis m\u00f5nda konkreetset arhitektuuri teisele.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pistikprogrammide jaoks kohandatud mallide loomisel tahan, et need lihtsalt t\u00f6\u00f6taksid ja siin on alternatiiv WordPressi funktsioonile template_redirect.<\/p>\n","protected":false},"author":1,"featured_media":236109,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,894,802,863],"tags":[1165],"class_list":["post-230454","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-kood","category-php-4","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230454","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=230454"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230454\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/236109"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=230454"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=230454"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=230454"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}