{"id":231089,"date":"2022-12-12T19:58:00","date_gmt":"2022-12-12T16:58:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231089"},"modified":"2022-12-07T11:19:09","modified_gmt":"2022-12-07T08:19:09","slug":"strategia-laajennusasetusten-alustamiseksi","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/strategia-laajennusasetusten-alustamiseksi\/","title":{"rendered":"Strategia laajennusasetusten alustamiseksi"},"content":{"rendered":"\n<p>Aina kun ty\u00f6skentelet laajennuksen parissa, joka tarjoaa sivun asetuksilleen, voit tallentaa ja hakea tietoja useilla tavoilla.<\/p>\n<p>Sin\u00e4 pystyt:<\/p>\n<ul>\n<li>k\u00e4yt\u00e4 <strong><a href=\"https:\/\/codex.wordpress.org\/Settings_API\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">asetusten sovellusliittym\u00e4\u00e4<\/a><\/strong> ,<\/li>\n<li>k\u00e4ytt\u00e4\u00e4 mukautettua sivua ja puheluita, jotka ovat n\u00e4iden kahden yhdistelm\u00e4,<\/li>\n<li>k\u00e4ytt\u00e4\u00e4 jonkinlaista hybridi\u00e4 <strong><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_submenu_page\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">alivalikkosivun<\/a><\/strong> (tai <strong><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_menu_page\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">valikkosivun<\/a><\/strong>) ja muiden toimintojen v\u00e4lill\u00e4.<\/li>\n<\/ul>\n<p>Mit\u00e4 enemm\u00e4n olen ty\u00f6skennellyt WordPressin kanssa, sit\u00e4 v\u00e4hemm\u00e4n haluan k\u00e4ytt\u00e4\u00e4 Asetukset-sovellusliittym\u00e4\u00e4 ja valita hieman hybridil\u00e4hestymistapaa.<\/p>\n<p>Hankkeen vaatimuksista riippuen toteutus vaihtelee; Yrit\u00e4n kuitenkin k\u00e4ytt\u00e4\u00e4 suhteellisen johdonmukaista tapaa luoda toiminnallisuus.<\/p>\n<p>Ja vaikka t\u00e4ss\u00e4 viestiss\u00e4 ei k\u00e4sitell\u00e4 eri tapoja, joilla luon sivujani, aiheeseen liittyvi\u00e4 kursseja ja niin edelleen, se tarjoaa yhden tavan, jolla voit alustaa laajennusasetukset ty\u00f6skennelless\u00e4si projektissasi tai jonkun muun puolesta.<\/p>\n<h2>Alustetaan laajennusasetuksia<\/h2>\n<p>T\u00e4ss\u00e4 viestiss\u00e4 oletetaan, ett\u00e4 vaatimukset edellytt\u00e4v\u00e4t sivun arvojen tallentamista assosiatiivisena taulukkona, joka on desinfioitu ja sarjoitettu laajennuksen sis\u00e4lt\u00e4.<\/p>\n<p>Tarvitsemasi desinfiointitoiminnon lis\u00e4ksi tied\u00e4t my\u00f6s, ett\u00e4 aiot ty\u00f6skennell\u00e4:<\/p>\n<ol>\n<li>vaihtoehtotaulukko,<\/li>\n<li>ja sellaisenaan ainutlaatuinen avain vaihtoehtotaulukkoon tallennetuille vaihtoehdoille<\/li>\n<\/ol>\n<p>Nyt olioohjatun ohjelmoinnin yhteydess\u00e4 minulla on yleens\u00e4 useita luokkia, jotka on asetettu k\u00e4sittelem\u00e4\u00e4n kaikkia n\u00e4it\u00e4 toimintoja, mutta olen ensisijaisesti kiinnostunut n\u00e4ytt\u00e4m\u00e4\u00e4n tavan edet\u00e4 liit\u00e4nn\u00e4isasetusten alustuksessa.<\/p>\n<h3>Mutta miksi?<\/h3>\n<p>Jos lataat sivun, jonka on tarkoitus noutaa vaihtoehtoja tietokannasta, mutta arvoja ei ole alustettu, n\u00e4et varoituksia n\u00e4yt\u00f6ll\u00e4si tai jotain n\u00e4kyy virheenkorjauslokitiedostossasi.<\/p>\n<p>T\u00e4m\u00e4 kaikki riippuu siit\u00e4, kuinka olet m\u00e4\u00e4ritt\u00e4nyt paikallisen asennuksen sek\u00e4 siit\u00e4, kuinka is\u00e4nt\u00e4si m\u00e4\u00e4ritykset on m\u00e4\u00e4ritetty.<\/p>\n<p>Siit\u00e4 huolimatta haluat varmistaa, ett\u00e4 olet alustanut laajennuksen asetukset niin, ett\u00e4 sinulla on ainakin tietokannan rivi asetettuna ja laajennuksen aloitusarvot tai tyhj\u00e4t arvot.<\/p>\n<h3>Kuinka tehd\u00e4 se<\/h3>\n<p>Kuten aiemmin mainittiin, koska pid\u00e4n luokkien k\u00e4yt\u00f6st\u00e4 ty\u00f6ss\u00e4ni, perustan yleens\u00e4 luokan, joka on vastuussa arvojen lukemisesta ja kirjoittamisesta tietokantaan. Ja t\u00e4h\u00e4n sis\u00e4ltyy laajennusasetusten alustus.<\/p>\n<p>K\u00e4yt\u00e4n t\u00e4t\u00e4 varten yleens\u00e4 seuraavaa prosessia:<\/p>\n<ol>\n<li>alusta luokka,<\/li>\n<li>tarkista, onko tietokannassa vaihtoehto,<\/li>\n<li>jos ei, niin alusta se,<\/li>\n<li>jos on, \u00e4l\u00e4 tee mit\u00e4\u00e4n.<\/li>\n<\/ol>\n<p>Alkuper\u00e4inen koodi t\u00e4m\u00e4n tekemiseksi voi n\u00e4ytt\u00e4\u00e4 <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/5a9940d1364b4d15e1de755f78bd0a79#file-00-initialize-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4lt\u00e4<\/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>Mutta koska t\u00e4m\u00e4 on omassa funktiossaan, sit\u00e4 voidaan kutsua luokkasi rakentajan sis\u00e4ll\u00e4 tai voit merkit\u00e4 sen <strong>julkiseksi<\/strong> ja kutsua sit\u00e4 luokan ulkopuolelle. T\u00e4t\u00e4 postausta varten soitan <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/5a9940d1364b4d15e1de755f78bd0a79#file-01-constructor-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kuitenkin rakentajalle<\/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 kun arvot on alustettu, luokalle <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/5a9940d1364b4d15e1de755f78bd0a79#file-02-final-constructor-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">voidaan asettaa<\/a><\/strong> attribuutti :<\/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>Vaikka on syyt\u00e4 tehd\u00e4 se, ett\u00e4 t\u00e4t\u00e4 ei pit\u00e4isi tehd\u00e4 rakentajassa, pid\u00e4n siit\u00e4, ett\u00e4 luokan ominaisuudet alustetaan mainitun luokan konstruktorissa.<\/p>\n<p>Ja koska luokka on vastuussa asetusten viittauksen yll\u00e4pit\u00e4misest\u00e4, on j\u00e4rkev\u00e4\u00e4 alustaa asetukset t\u00e4\u00e4ll\u00e4.<\/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>T\u00e4m\u00e4 viesti ei kata erilaisia \u200b\u200btapoja luoda vaihtoehtosivuja, se tarjoaa tavan, jolla voit alustaa laajennusasetukset.<\/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":[719,895,834,803,864],"tags":[1166],"class_list":["post-231089","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-koodi","category-opas-aloittelijoille","category-php-5","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231089","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=231089"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231089\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/234934"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=231089"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=231089"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=231089"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}