{"id":229751,"date":"2022-11-23T13:38:00","date_gmt":"2022-11-23T10:38:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229751"},"modified":"2022-11-09T16:13:41","modified_gmt":"2022-11-09T13:13:41","slug":"mallide-loomine-ja-tingimuslik-loogika-oop-iga-wordpressis","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/mallide-loomine-ja-tingimuslik-loogika-oop-iga-wordpressis\/","title":{"rendered":"Mallide loomine ja tingimuslik loogika OOP-iga WordPressis"},"content":{"rendered":"\n<p>Mallide loomine on WordPressis \u00fcha tavalisem ja ma pean seda heaks.<\/p>\n<p>Kuid see ei t\u00e4henda, et meie hallata pole projekte, mis kasutaksid mallide v\u00f5i osade kuvamisel traditsioonilisemat l\u00e4henemist. Lisaks ei t\u00e4henda see ka seda, et oleme vabastatud koodibaaside haldamisest, mis kasutavad koodi, mis ei kasuta mallimootorit.<\/p>\n<p>Kuigi ma arvan, et mallide loomine on hea, pole see alati vajalik. See on aga sisu teise postituse jaoks.<\/p>\n<p>Selle asemel tahan l\u00e4bi k\u00e4ia tingimusliku loogika kasutamise protsessi, mille kohaselt kuvada mallis osa v\u00f5i mitte, ja teha seda objektorienteeritud programmeerimise abil.<\/p>\n<h2>Mallimine ja tingimuslik loogika OOP-iga<\/h2>\n<p>Selleks oletame j\u00e4rgmist.<\/p>\n<ol>\n<li>Meil on \u00fcks pistikprogramm, mis s\u00f5ltub funktsiooni teisest pistikprogrammist.<\/li>\n<li>Teine pistikprogramm on valikuline.<\/li>\n<li>Kui seda pole, kuvame teatise. Kui see on olemas, kuvame osalise.<\/li>\n<\/ol>\n<p>Piisavalt otse edasi, eks?<\/p>\n<p>Ainus asi, mida tuleb t\u00e4hele panna, on see, et kogu seda loogikat hoitakse esmases pistikprogrammis (st selles, mis kontrollib teise pistikprogrammi olemasolu).<\/p>\n<h3>1 Malli tingimuslik loogika<\/h3>\n<p>Esimene asi, mida tuleb teha, on funktsioon, mis kontrollib sekundaarse pistikprogrammi olemasolu. Selle p\u00f5hjuseks on asjaolu, et mall n\u00e4eb v\u00e4lja umbes <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/fe4cbdc9eb5e6409fb4f9e3e1784f97d#file-00-template-example-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">selline:<\/a><\/strong><\/p>\n<pre><code>&lt;div class=\"wrap\"&gt;\n    &lt;!-- Snipping out irrelevant code in this file --&gt;\n    &lt;form id=\"yhd-upload-new-item-settings\"&gt;\n        &lt;?php if (!$this-&gt;hasSecondaryPlugin()) { ?&gt;\n            &lt;?php include_once 'partials\/error-inactive-plugin.php'; ?&gt;\n        &lt;?php } else { ?&gt;\n            &lt;h2&gt;Secondary Plugin Settings&lt;\/h2&gt;\n            &lt;p class=\"description\"&gt;The Secondary Plugin is installed and active.&lt;\/p&gt;\n            &lt;form method=\"post\" action=\"&lt;?php echo esc_html(admin_url('admin-post.php')); ?&gt;\"&gt;\n                &lt;label for=\"acme-secondary-plugin\"&gt;\n                    &lt;input type=\"checkbox\" name=\"acme-secondary-plugin\" value=\"true\"\/&gt;\n                    Would you like to automatically use the secondary plugin?\n                &lt;\/label&gt;\n                &lt;!-- Snipping out irrelevant code in this file --&gt;\n            &lt;\/form&gt;\n        &lt;?php } ?&gt;\n    &lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>Ja siis v\u00f5ib osa v\u00e4lja n\u00e4ha umbes <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/fe4cbdc9eb5e6409fb4f9e3e1784f97d#file-01-error-inactive-plugin-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">selline<\/a><\/strong> (see s\u00f5ltub teie rakendusest):<\/p>\n<pre><code>&lt;?php\n\/**\n * This is the partial displayed when the Secondary Plugin is not active.\n *\/\n?&gt;\n&lt;div id=\"inactive-importer-message\" class=\"error notice is-dismissible\"&gt;\n    &lt;p&gt;[The message you want to display here.]&lt;\/p&gt;\n    &lt;button type=\"button\" class=\"notice-dismiss\"&gt;\n        &lt;span class=\"screen-reader-text\"&gt;Dismiss this notice.&lt;\/span&gt;\n    &lt;\/button&gt;\n&lt;\/div&gt;&lt;!-- #inactive-importer-message --&gt;<\/code><\/pre>\n<p>T\u00e4nu sellele, kuidas WordPressis on mallid, j\u00e4\u00e4b funktsioon klassi sisse ja klass kontrollib pistikprogrammi olemasolu.<\/p>\n<p>Kui kasutate koodi nuusutajat, k\u00e4ivitab see t\u00f5en\u00e4oliselt hoiatuse, et meetodit ei kasutata, kuid meetodit kasutatakse, seda kasutatakse lihtsalt mallifailis. M\u00e4rkus klassis. K\u00f5ik see v\u00f5ib \u00f6elda, et m\u00f5ned meie nuusutajad pole nii intelligentsed. Siiski.<\/p>\n<h3>2 Pistikprogrammi serveripoolne kood<\/h3>\n<p>Kui olete saanud \u00fcldise ettekujutuse, kuidas see toimib, on aeg oma klassis kood kirjutada.<\/p>\n<p>Pidage meeles, et see on lihtne funktsioon: see peab lihtsalt kontrollima pistikprogrammi olemasolu. Saate seda teha mitmel viisil, kuid k\u00f5ige levinum v\u00f5ib olla API funktsiooni <strong><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/is_plugin_active\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">is_active_plugin kasutamine.<\/a><\/strong><\/p>\n<p>Pange t\u00e4hele, et selle funktsiooni kasutamisel p\u00f5hineb see idee, et teate kasutatava pistikprogrammi nime. Kui ei, on muid viise, kuid see ei kuulu selle postituse ulatusse.<\/p>\n<p>Igatahes, kuna loogika on tingimuslik, peab see tagastama t\u00f5ev\u00e4\u00e4rtuse ja see on t\u00e4pselt see, mida \u00fclaltoodud API funktsioon teeb. Seega v\u00f5ib serveripoolne funktsioon v\u00e4lja n\u00e4ha umbes <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/fe4cbdc9eb5e6409fb4f9e3e1784f97d#file-02-hassecondaryplugin-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">selline:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\n\/**\n * Determines if the Secondary Importer is is activated.\n *\n * @return bool True if the the pklugin is active; false, otherwise.\n *\/\nprivate function hasSecondaryPlugin()\n{\n    return in_array(\n        'secondary-plugin\/secondary-plugin.php',\n        get_option('active_plugins')\n    );\n}\n<\/code><\/pre>\n<p>Ja kuna mallikood kutsub seda funktsiooni (mida n\u00e4ete \u00fclal), m\u00e4\u00e4rab see, kas see peab n\u00e4itama osalist v\u00f5i mitte.<\/p>\n<h2>Piisavalt lihtne<\/h2>\n<p>M\u00f5ne jaoks on see t\u00f5esti lihtne kraam; teiste jaoks on see t\u00e4iesti erinev l\u00e4henemisviis, kuna see k\u00e4sitleb murede suuremat eraldamist.<\/p>\n<p>Ja j\u00e4tkates koos saidi liikmetega <strong><a href=\"https:\/\/tommcfarlin.com\/tag\/oop-fundamentals\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">OOP Fundamentalsi<\/a><\/strong> t\u00f6\u00f6d, arvan, et on oluline jagada m\u00f5ningaid paremaid tavasid ka nendega, kes ei pruugi olla liikmed, kuid soovivad kirjutada paremini organiseeritud koodi.<\/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>Kasutage objektorienteeritud programmeerimist ja tingimusloogikat, et eraldada probleemid osade, mallide ja serveripoolse koodi vahel.<\/p>\n","protected":false},"author":1,"featured_media":164710,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,894,842,863],"tags":[1165],"class_list":["post-229751","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-kood","category-opetused","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/229751","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=229751"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/229751\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/164710"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=229751"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=229751"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=229751"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}