{"id":228532,"date":"2022-10-22T18:03:00","date_gmt":"2022-10-22T15:03:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228532"},"modified":"2022-11-09T02:53:02","modified_gmt":"2022-11-08T23:53:02","slug":"wordpressi-pistikprogrammide-taastamine-vaeike-naeide","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/wordpressi-pistikprogrammide-taastamine-vaeike-naeide\/","title":{"rendered":"WordPressi pistikprogrammide taastamine: v\u00e4ike n\u00e4ide"},"content":{"rendered":"\n<p>\u00dcks WordPressi pistikprogrammide moodustumise viise on see, et v\u00e4hemalt minu puhul algavad need funktsioonide kogumina, mida kasutatakse antud projekti konkreetse eesm\u00e4rgi t\u00e4itmiseks. Sealt edasi m\u00f5tlete: &quot;Hei, v\u00f5ib-olla on see kellelegi teisele kasulik.&quot;<\/p>\n<p>V\u00e4hemalt on see minu kogemus sagedamini kui mitte.<\/p>\n<p>Kuid asi on selles, et enne kui selle teistele inimestele proovimiseks v\u00e4lja annate, soovite koodi puhastamise protsessi l\u00e4bi teha. Ma ei r\u00e4\u00e4gi ka WordPressi pistikprogrammide \u00fcmbert\u00f6\u00f6tamisest \u2013 v\u00e4hemalt mitte veel.<\/p>\n<p>Ma r\u00e4\u00e4gin koodi v\u00f5tmisest, selle viimisest millekski, mis t\u00f6\u00f6tab WordPressi pistikprogrammina, ja seej\u00e4rel v\u00f5ib-olla koodi \u00fcmbert\u00f6\u00f6tamisest.<\/p>\n<h2>WordPressi pistikprogrammide \u00fcmbert\u00f6\u00f6tamine<\/h2>\n<p>Kogu WordPressi pistikprogrammide \u00fcmbertegemise protsessi l\u00e4bimine \u2013 r\u00e4\u00e4kimata \u00fchest WordPressi pistikprogrammist \u2013 v\u00f5ib olla vaevarikas, kuid pistikprogrammi osa \u00fcmbert\u00f6\u00f6tamise jagamine on midagi, mis on teostatav.<\/p>\n<p>Nii et ma kasutan n\u00e4idet selle kohta, kuidas ma hiljuti midagi kasutasin (koos veidi abstraktse koodiga, et mitte vaevuda konkreetse projekti kohta t\u00e4psustama).<\/p>\n<p>Valikute ideaalse v\u00e4ljundi kaardistamine.<\/p>\n<p>Enne seda arvan siiski, et on oluline jagada minu protsess v\u00f5ib teie omast erineda v\u00f5i t\u00f5en\u00e4oliselt erineda (kuna paljudel meist on erinevad protsessid).<\/p>\n<ol>\n<li>Kujundage komponent (jah, isegi mitte t\u00e4ielik pistikprogramm) s\u00fclearvutis,<\/li>\n<li>Koostage kontrollnimekiri kasutusjuhtudest, millal see peaks l\u00e4bima ja millal eba\u00f5nnestuma,<\/li>\n<li>Kirjutage \u00fcles, milliseid andmeid on vaja, kuidas neid vaja on ja millal tuleks neid ignoreerida<\/li>\n<li>Teisendage k\u00f5ik \u00fclaltoodud koodiks.<\/li>\n<\/ol>\n<p>Muidugi ei teisenda ma seda k\u00f5ike s\u00f5na otseses m\u00f5ttes koodiks, aga saate aru. V\u00f5ib-olla on k\u00f5ige t\u00e4psem viis selle v\u00e4ljendamiseks j\u00e4rgmine:<\/p>\n<ul>\n<li>Alustage pika meetodiga, mis sobib ideaalselt kasutamiseks. Seej\u00e4rel muutke see kood \u00fcmber nii, et funktsioonid oleksid v\u00e4iksemad, ja arvestage juhtumitega, mille korral tulemus eba\u00f5nnestub.<\/li>\n<\/ul>\n<p>Seda \u00f6eldes v\u00f5ib kood v\u00e4lja n\u00e4ha j\u00e4rgmine.<\/p>\n<h3>1 Ideaalse kasutusjuhtumi kirjutamine<\/h3>\n<p>Selles n\u00e4ites <a href=\"https:\/\/gist.github.com\/tommcfarlin\/5426f8d7e592eb99a128d663aec87b01#file-00-ideal-path-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">on ideaalne<\/a> kasutusjuhtum, kui kasutaja laadib suvandid, suvandid on olemas ja seej\u00e4rel peab ta sooritama toimingu, kui suvanditel on teatud v\u00e4\u00e4rtused.<\/p>\n<pre><code>&lt;?php\n\nprivate function load_dates() {\n\n    $options        = get_option( 'acme_date_options' );\n    $event_settings = $options['event'];\n\n    $import    = $event_settings['import'];\n    $post_type = $event_settings['post-type'];\n\n    if (( 0 === strcmp( 'yes', $import)) &amp;&amp; (0 === strcmp( 'events', $post_type) )) {\n        \/\/ This is where you take whatever action you want.\n    }\n}<\/code><\/pre>\n<p>See osa peaks olema h\u00f5lpsasti loetav, kuid see ei arvesta midagi peale koodi ideaalse tee.<\/p>\n<h3>2 Minge veidi kaitsesse<\/h3>\n<p>J\u00e4rgmisena tahaksin enne lugemist veenduda, et suvandid on m\u00e4\u00e4ratud. M\u00f5nel juhul v\u00f5ite soovida kuvada teatise, teha erandi v\u00f5i logiteavet.<\/p>\n<p>Selles n\u00e4ites <a href=\"https:\/\/gist.github.com\/tommcfarlin\/5426f8d7e592eb99a128d663aec87b01#file-02-defensive-coding-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">naasen lihtsalt,<\/a> kuna seda on lihtne lugeda ja seda saab k\u00f5ige h\u00f5lpsamini teie jaoks kohandada.<\/p>\n<pre><code>&lt;?php\n\nprivate function load_dates() {\n\n    $options = get_option( 'acme_date_options' );\n    if (! isset( $options['event'])) {\n            return;\n    }\n\n    $event_settings = $options['event'];\n    if (! isset( $event_settings['import']) ||! isset( $event_settings['post-type'])) {\n        return;\n    }\n\n    $import    = $event_settings['import'];\n    $post_type = $event_settings['post-type'];\n\n    if (( 0 === strcmp( 'yes', $import)) &amp;&amp; (0 === strcmp( 'events', $post_type) )) {\n        \/\/ This is where you take whatever action you want.\n    }\n}<\/code><\/pre>\n<p>Nii et see k\u00e4sitleb valikuid, aga kuidas on siis, kui valikud on m\u00e4\u00e4ratud, kuid neil pole ootusp\u00e4raseid v\u00e4\u00e4rtusi? See t\u00e4hendab, et peame ka kontrollima, et nad seda teevad. Ja kui ei, siis ignoreerige neid, p\u00f6\u00f6rduge tagasi, logige t\u00f5rketeade, tehke erand ja nii edasi.<\/p>\n<p>Teate: sama, mis \u00fclal. V\u00e4lja arvatud sel juhul, ma ei v\u00f5ta midagi ette, kui koodil pole ideaalset teavet.<\/p>\n<h3>3 Natuke pikaks saamine<\/h3>\n<p>Praegu muutub meetod pisut pikaks ja seda on raskem lugeda. Muidugi, kui olete kogenud programmeerija, v\u00f5ite v\u00e4ita, et &quot;See on kood, see pole inglise keel&quot;, kuid miks mitte seada eesm\u00e4rgiks muuta selle j\u00e4lgimine pisut lihtsamaks?<\/p>\n<p>Lisaks muudab see testimise pisut lihtsamaks. Kuid see ei kuulu selle postituse ulatusse. V\u00f5tke koodi esimese n\u00e4itena valikute hindamine.<\/p>\n<ol>\n<li>See on midagi, mille saab kokku v\u00f5tta selle funktsiooniga, mis mitte ainult ei isoleeri seda kontrolli, vaid muudab ka sellest tuleneva k\u00f5ne pisut lihtsamaks.<\/li>\n<li>J\u00e4rgmiseks v\u00f5tke teine \u200b\u200bkoodiplokk, mis kontrollib ideaalseid valikuv\u00e4\u00e4rtusi. Seda saab ka abstraktselt v\u00f5tta samadel \u00fclaltoodud p\u00f5hjustel.<\/li>\n<li>Ja l\u00f5puks seadistage funktsioon, mis tagab, et iga m\u00e4\u00e4ratud v\u00e4\u00e4rtuse jaoks on seatud eeldatavad <a href=\"http:\/\/03-consolidation.php\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">v\u00e4\u00e4rtused<\/a> :<\/li>\n<\/ol>\n<pre><code>&lt;?php\n\nprivate function has_valid_option( $option) {\n  return isset( $option );\n}\n\nprivate function has_valid_values( $value1, $value2) {\n  return! (isset( $value1) &amp;&amp; isset( $value2) );\n}\n\nprivate function can_import_data( $value1, $value2) {\n\n    return (0 === strcmp( 'yes', $value1)) &amp;&amp; (0 === strcmp( 'events', $value2) );\n}<\/code><\/pre>\n<p>N\u00fc\u00fcd on teil kaks v\u00e4iksemat meetodit, mis kapseldavad sama kontrolli, mida tegite.<\/p>\n<h3>4 L\u00f5plik funktsioon<\/h3>\n<p>Siinkohal on viimast funktsiooni palju lihtsam lugeda, kuna sellel on kaks abifunktsiooni, mis koondavad nende kohustused, samas kui <a href=\"https:\/\/gist.github.com\/tommcfarlin\/5426f8d7e592eb99a128d663aec87b01#file-04-final-function-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">see on tagasi<\/a> koodi ideaalse tee hindamise juurde:<\/p>\n<pre><code>&lt;?php\n\nprivate function load_dates() {\n\n    $options = get_option( 'acme_date_options' );\n    if (! $this-&gt;has_valid_option( $options)) {\n        return;\n    }\n\n    $event_settings = $options['event'];\n    if (! $this-&gt;has_valid_values( $event_settings['import'], $event_settings['post-type'])) {\n        return;\n    }\n\n    $import    = $event_settings['import'];\n    $post_type = $event_settings['post-type'];\n\n    if ($this-&gt;can_import_data( $import, $post_type)) {\n        \/\/ This is where you take whatever action you want.\n    }\n}<\/code><\/pre>\n<p>Piisab, kui \u00f6elda, et mis puudutab WordPressi pistikprogrammide \u00fcmberkujundamist, siis see on vaid \u00fcks n\u00e4ide, kuidas teha sellest vaid osa. Aga see on algus, eks?<\/p>\n<h2>Terved pistikprogrammid?<\/h2>\n<p>Ma tean, eks? WordPressi pistikprogrammide \u00fcmbert\u00f6\u00f6tamine pole naljaasi. Kuid kui alustate selliste v\u00e4ikeste funktsioonidega ja liigute j\u00e4rk-j\u00e4rgult koodibaasi \u00fcmber, muutub see lihtsamaks.<\/p>\n<p>Ja kui kulutate aega projekti algusest peale kavandamisele, v\u00f5ib see s\u00e4\u00e4sta palju aega tagasip\u00f6\u00f6rdumisel ja selliste asjade \u00fcmbert\u00f6\u00f6tamisel.<\/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>WordPressi pistikprogrammide \u00fcmbert\u00f6\u00f6tamine on t\u00f6\u00f6. Kuid kui alustate v\u00e4ikeste funktsioonidega ja liigute j\u00e4rk-j\u00e4rgult koodibaasi \u00fcmber, muutub see lihtsamaks.<\/p>\n","protected":false},"author":1,"featured_media":220671,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,749,894,916,812,863],"tags":[1165],"class_list":["post-228532","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-avatud-laehtekoodiga","category-kood","category-muud","category-pistikprogrammid","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/228532","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=228532"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/228532\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/220671"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=228532"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=228532"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=228532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}