{"id":230539,"date":"2022-12-12T20:22:00","date_gmt":"2022-12-12T17:22:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230539"},"modified":"2022-12-07T11:19:08","modified_gmt":"2022-12-07T08:19:08","slug":"pistikprogrammi-saetete-laehtestamise-strateegia","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/pistikprogrammi-saetete-laehtestamise-strateegia\/","title":{"rendered":"Pistikprogrammi s\u00e4tete l\u00e4htestamise strateegia"},"content":{"rendered":"\n<p>Kui t\u00f6\u00f6tate pistikprogrammiga, mis pakub oma seadete jaoks lehte, saate teavet salvestada ja hankida mitmel viisil.<\/p>\n<p>Sa saad:<\/p>\n<ul>\n<li>kasutage <strong><a href=\"https:\/\/codex.wordpress.org\/Settings_API\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">seadete API<\/a><\/strong> -t ,<\/li>\n<li>kasutage kohandatud lehte ja k\u00f5nesid, mis on nende kahe h\u00fcbriid,<\/li>\n<li><strong><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_submenu_page\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kasutage alammen\u00fc\u00fclehe<\/a><\/strong> (v\u00f5i <strong><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_menu_page\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">men\u00fc\u00fclehe<\/a><\/strong>) ja muude funktsioonide vahel mingit h\u00fcbriidi .<\/li>\n<\/ul>\n<p>Mida rohkem olen WordPressiga t\u00f6\u00f6tanud, seda v\u00e4hem tahan kasutada seadete API-d ja valida h\u00fcbriidse l\u00e4henemise.<\/p>\n<p>S\u00f5ltuvalt projekti n\u00f5uetest on rakendamine erinev; siiski p\u00fc\u00fcan funktsionaalsuse loomiseks kasutada suhteliselt \u00fchtset viisi.<\/p>\n<p>Ja kuigi see postitus ei k\u00e4sitle erinevaid viise, kuidas ma oma lehti, seotud klasse ja nii edasi loon, pakub see \u00fchte v\u00f5imalust pistikprogrammi s\u00e4tete l\u00e4htestamiseks, kui t\u00f6\u00f6tate oma projektiga v\u00f5i kellegi teise projektiga.<\/p>\n<h2>Plugina s\u00e4tete l\u00e4htestamine<\/h2>\n<p>Eeldage selle postituse jaoks, et n\u00f5uded n\u00f5uavad lehe v\u00e4\u00e4rtuste salvestamist assotsiatiivse massiivina, mis on pistikprogrammi sees puhastatud ja serialiseeritud.<\/p>\n<p>Lisaks desinfitseerimisfunktsioonile, mida vajate, teate ka seda, et t\u00f6\u00f6tate koos:<\/p>\n<ol>\n<li>valikute tabel,<\/li>\n<li>ja sellisena unikaalne v\u00f5ti valikute tabelisse salvestatud valikute jaoks<\/li>\n<\/ol>\n<p>N\u00fc\u00fcd objektorienteeritud programmeerimise kontekstis on mul tavaliselt k\u00f5igi selle funktsioonide haldamiseks seadistatud mitu klassi, kuid ma olen peamiselt huvitatud sellest, kuidas n\u00e4idata, kuidas pistikprogrammi seadeid l\u00e4htestada.<\/p>\n<h3>Aga miks?<\/h3>\n<p>Kui laadite lehe, mis on m\u00f5eldud andmebaasist valikute toomiseks, kuid v\u00e4\u00e4rtusi pole l\u00e4htestatud, n\u00e4ete ekraanil hoiatusi v\u00f5i kuvatakse midagi teie silumislogifailis.<\/p>\n<p>See k\u00f5ik s\u00f5ltub sellest, kuidas olete oma kohaliku installi konfigureerinud ja kuidas teie host on selle konfiguratsiooni m\u00e4\u00e4ratlenud.<\/p>\n<p>Sellest hoolimata soovite veenduda, et olete pistikprogrammi s\u00e4tted l\u00e4htestanud nii, et teil oleks v\u00e4hemalt andmebaasis seatud rida ja pistikprogrammi algv\u00e4\u00e4rtused v\u00f5i t\u00fchjad v\u00e4\u00e4rtused.<\/p>\n<h3>Kuidas seda teha<\/h3>\n<p>Nagu eelnevalt mainitud, olen oma t\u00f6\u00f6s klasside kasutamise f\u00e4nn, sest tavaliselt loon klassi, mis vastutab v\u00e4\u00e4rtuste lugemise ja andmebaasi kirjutamise eest. Ja see h\u00f5lmab pistikprogrammi s\u00e4tete l\u00e4htestamist.<\/p>\n<p>Selleks kasutan tavaliselt j\u00e4rgmist protsessi:<\/p>\n<ol>\n<li>initsialiseerida klass,<\/li>\n<li>kontrollige, kas andmebaasis on suvand,<\/li>\n<li>kui ei, siis l\u00e4htestage see,<\/li>\n<li>kui jah, siis \u00e4ra tee midagi.<\/li>\n<\/ol>\n<p>Esialgne kood selle tegemiseks v\u00f5ib v\u00e4lja n\u00e4ha umbes <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/5a9940d1364b4d15e1de755f78bd0a79#file-00-initialize-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">selline<\/a><\/strong> :<\/p>\n<pre><code>&lt;?php\n\/**\n * Initializes the plugin settings fo ruse throughout the rest of the plugin.\n *\/\nprivate function initialize() {\n    $settings = [\n        'username' =&gt; '',\n        'user-info' =&gt; [\n              'location' =&gt; '',\n              'id-number' =&gt; '',\n              'first-name' =&gt; '',\n              'last-name' =&gt; '',\n        ],\n        'short-bio' =&gt; '',\n    ];\n    update_option('acme-plugin-settings', $settings);\n}\n<\/code><\/pre>\n<p>Kuid kuna sellel on oma funktsioon, saab seda kutsuda teie klassi konstruktoris v\u00f5i m\u00e4rkida see <strong>avalikuks<\/strong> ja kutsuda seda v\u00e4ljaspool klassi. Selle postituse jaoks kutsun ma seda <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/5a9940d1364b4d15e1de755f78bd0a79#file-01-constructor-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">konstruktoris \u00fcles<\/a><\/strong> :<\/p>\n<pre><code>&lt;?php\n\n\/**\n * Intiializes the properties of the class, primarily the array of settings.\n *\/\npublic function __construct() {\n    if (false === get_option('acme-plugin-settings')) {\n        $this-&gt;initialize();\n    }\n    \/\/ More to come...\n}\n<\/code><\/pre>\n<p>Ja kui v\u00e4\u00e4rtused on l\u00e4htestatud, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/5a9940d1364b4d15e1de755f78bd0a79#file-02-final-constructor-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">saab m\u00e4\u00e4rata<\/a><\/strong> klassi atribuudi :<\/p>\n<pre><code>&lt;?php\n\n\/**\n * Intiializes the properties of the class, primarily the array of settings.\n *\/\npublic function __construct() {\n    if (false === get_option('acme-plugin-settings')) {\n        $this-&gt;initialize();\n    }\n    $this-&gt;settings = get_option('acme-plugin-settings');\n}\n<\/code><\/pre>\n<p>Kuigi tuleb \u00f6elda, et seda ei tohiks konstruktoris teha, meeldib mulle, kui klassi atribuudid l\u00e4htestatakse nimetatud klassi konstruktoris.<\/p>\n<p>Ja kuna klass vastutab s\u00e4tete viite s\u00e4ilitamise eest, siis on m\u00f5ttekas seadistused siin l\u00e4htestada.<\/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>See postitus ei h\u00f5lma erinevaid v\u00f5imalusi suvandite lehtede loomiseks, see pakub viisi, kuidas saate pistikprogrammi seadeid l\u00e4htestada.<\/p>\n","protected":false},"author":1,"featured_media":234934,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,833,894,802,863],"tags":[1165],"class_list":["post-230539","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-juhend-algajatele","category-kood","category-php-4","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230539","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=230539"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230539\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/234934"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=230539"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=230539"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=230539"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}