{"id":229892,"date":"2022-11-13T10:20:00","date_gmt":"2022-11-13T07:20:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229892"},"modified":"2022-11-09T19:11:03","modified_gmt":"2022-11-09T16:11:03","slug":"wordpressin-modaalidialogien-lisaeaeminen-sisaeaenrakennetuilla-kirjastoilla","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/wordpressin-modaalidialogien-lisaeaeminen-sisaeaenrakennetuilla-kirjastoilla\/","title":{"rendered":"WordPressin modaalidialogien lis\u00e4\u00e4minen (sis\u00e4\u00e4nrakennetuilla kirjastoilla)"},"content":{"rendered":"\n<p>Aina kun on kyse ratkaisujen kehitt\u00e4misest\u00e4 asiakkaille, tulee joskus aikoja, jolloin joudut todenn\u00e4k\u00f6isesti n\u00e4ytt\u00e4m\u00e4\u00e4n tietoja WordPressin modaalisissa valintaikkunoissa.<\/p>\n<p>T\u00e4h\u00e4n on saatavilla monia ratkaisuja, ja mit\u00e4 paremmin tunnet JavaScriptin, erilaiset kirjastot ja niill\u00e4 olevat kirjastot, sit\u00e4 vaikeampaa (tai ehk\u00e4 jopa helpompaa) on valita k\u00e4ytett\u00e4v\u00e4.<\/p>\n<p>Mutta WordPressiss\u00e4 on sis\u00e4\u00e4nrakennettu infrastruktuuri, joka tekee toiminnallisuuden sis\u00e4llytt\u00e4misest\u00e4 WordPressiin triviaalia. Joten kolmessa tulevassa postauksessa k\u00e4sittelen seuraavaa:<\/p>\n<ol>\n<li>Kuinka sis\u00e4llytt\u00e4\u00e4 WordPressin modaalidialogeja sis\u00e4\u00e4nrakennettujen kirjastojen avulla,<\/li>\n<li>Modaalisten valintaikkunoiden t\u00e4ytt\u00e4minen tiedoilla,<\/li>\n<li>Modaalivalintaikkunan t\u00e4ytt\u00e4minen dynaamisilla tiedoilla Ajaxin kautta.<\/li>\n<\/ol>\n<p>Sarjan luonteen vuoksi viestit eiv\u00e4t ole per\u00e4kk\u00e4in, mutta niiss\u00e4 kaikissa k\u00e4ytet\u00e4\u00e4n ainutlaatuista tunnistetta, jonka avulla voit lis\u00e4t\u00e4 kirjanmerkkeihin ja viitata sarjana, kun viestit ovat valmiit.<\/p>\n<p>Puhutaanpa WordPressin modaalidialogien helposta sis\u00e4llytt\u00e4misest\u00e4 sis\u00e4\u00e4nrakennetuilla kirjastoilla.<\/p>\n<h2>WordPressin modaalidialogit, osa 1<\/h2>\n<p>Aluksi oletan, ett\u00e4 sinulla on hallintasivun perusperusta.<\/p>\n<h3>Plugin-sivuilla<\/h3>\n<p>Eli sinulla on kaikki mit\u00e4 tarvitset laajennuksen asennukseen, aktivoimiseen ja sitten valikon tai alivalikon kautta n\u00e4kyv\u00e4\u00e4n sivuun.<\/p>\n<p>Jos ei, katso <a href=\"https:\/\/tommcfarlin.com\/wordpress-menu-page\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4m\u00e4 viesti<\/a> n\u00e4hd\u00e4ksesi kuinka p\u00e4\u00e4set alkuun.<\/p>\n<p>Kun olet tehnyt sen, tarvitset laajennussivun perusinfrastruktuurin. T\u00e4t\u00e4 sivua voidaan k\u00e4ytt\u00e4\u00e4 yksinkertaisesti tietojen n\u00e4ytt\u00e4miseen tai sit\u00e4 voidaan k\u00e4ytt\u00e4\u00e4 sek\u00e4 tietojen n\u00e4ytt\u00e4miseen ett\u00e4 antamaan k\u00e4ytt\u00e4j\u00e4lle mahdollisuus tallentaa vaihtoehtoja.<\/p>\n<p>T\u00e4ss\u00e4 opetusohjelmassa en ole erityisen kiinnostunut antamasta k\u00e4ytt\u00e4j\u00e4lle mahdollisuuden tallentaa vaihtoehtoja. Sen sijaan meid\u00e4n on luotava ankkuri, joka n\u00e4ytt\u00e4\u00e4 modaalisen valintaikkunan aina, kun sit\u00e4 napsautetaan.<\/p>\n<p>Ja sen sis\u00e4lt\u00e4m\u00e4t tiedot k\u00e4sitell\u00e4\u00e4n my\u00f6hemm\u00e4ss\u00e4 opetusohjelmassa.<\/p>\n<h3>Esimerkkilaajennussivu<\/h3>\n<p>T\u00e4ss\u00e4 vaiheessa oletan, ett\u00e4 sinulla on laajennussivu. Sen perusrakenne voi n\u00e4ytt\u00e4\u00e4 <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1db21634b8b7a88a963b3875553d2539#file-00-basic-plugin-page-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4lt\u00e4<\/a> :<\/p>\n<pre><code>&lt;?php\n\/**\n * A basic plugin page that will eventually be used to demonstrate how to use the\n * Thickbox library included with WordPress.\n *\n * @package Acme\n *\/\n?&gt;\n\n&lt;div id=\"acme-thickbox-demo\" class=\"wrap\"&gt;\n  &lt;!-- TODO --&gt;\n&lt;\/div&gt;&lt;!-- #acme-thickbox-demo --&gt;<\/code><\/pre>\n<p>Sielt\u00e4 tarvitaan kaksi asiaa:<\/p>\n<ol>\n<li>joka sis\u00e4lt\u00e4\u00e4 Thickbox-kirjaston<\/li>\n<li>ankkurin ja s\u00e4ili\u00f6n lis\u00e4\u00e4minen, joka n\u00e4ytt\u00e4\u00e4 modaalisen valintaikkunan<\/li>\n<\/ol>\n<p>Jos haluat sis\u00e4llytt\u00e4\u00e4 Thickbox-kirjaston laajennussivullesi, lis\u00e4\u00e4 t\u00e4m\u00e4 tunniste. Jos noudatat koodausstandardeja, sivullasi on todenn\u00e4k\u00f6isesti docblock sivun yl\u00e4osassa. T\u00e4h\u00e4n lis\u00e4\u00e4n yleens\u00e4 koodin.<\/p>\n<p>Add_thickbox\u00a0 -toiminto on WordPressin <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_thickbox\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tarjoama<\/a>, joka tekee seuraavat:<\/p>\n<blockquote>\n<p>Jonottaa oletusarvoiset ThickBox js- ja css-tiedostot.<\/p>\n<\/blockquote>\n<p>Hieman ep\u00e4m\u00e4\u00e4r\u00e4inen, eik\u00f6? Teknisesti pidempi kuvaus on:<\/p>\n<blockquote>\n<p>ThickBox on verkkosivun k\u00e4ytt\u00f6liittym\u00e4n dialogiwidget, joka on kirjoitettu JavaScriptill\u00e4 jQuery-kirjaston p\u00e4\u00e4lle. Sen teht\u00e4v\u00e4n\u00e4 on n\u00e4ytt\u00e4\u00e4 yksitt\u00e4inen kuva, useita kuvia, upotettua sis\u00e4lt\u00f6\u00e4, iframed-sis\u00e4lt\u00f6\u00e4 tai AJAXin kautta toimitettua sis\u00e4lt\u00f6\u00e4 hybridimodaalissa.<\/p>\n<\/blockquote>\n<p>Ja jos olet kiinnostunut Thickbox-kirjastosta sellaisenaan, voit n\u00e4hd\u00e4 sen <a href=\"http:\/\/codylindley.com\/thickbox\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4ll\u00e4 sivulla<\/a>.<\/p>\n<p>Joka tapauksessa takaisin sivulle. Nyt kun lis\u00e4\u00e4n sen laajennussivulleni WordPress API -toiminnolla, sivuni n\u00e4ytt\u00e4\u00e4 suunnilleen <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1db21634b8b7a88a963b3875553d2539#file-01-thickbox-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4lt\u00e4<\/a> :<\/p>\n<pre><code>&lt;?php\n\/**\n * A basic plugin page that will eventually be used to demonstrate how to use the\n * Thickbox library included with WordPress.\n *\n * @package Acme\n *\/\nadd_thickbox();\n?&gt;\n\n&lt;div id=\"acme-thickbox-demo\" class=\"wrap\"&gt;\n  &lt;!-- TODO --&gt;\n&lt;\/div&gt;&lt;!-- #acme-thickbox-demo --&gt;<\/code><\/pre>\n<p>Seuraavaksi ankkurin ja datan n\u00e4ytt\u00f6elementin luominen kulkevat k\u00e4si k\u00e4dess\u00e4 toistensa kanssa, nimitt\u00e4in koska ankkuri tarvitsee modaalidialogina toimivan elementin tunnuksen.<\/p>\n<p>Ankkuri tarvitsee seuraavat tiedot:<\/p>\n<ul>\n<li>modaalin n\u00e4ytt\u00e4v\u00e4n elementin tunnus,<\/li>\n<li>mainitun modaalidialogin mitat<\/li>\n<\/ul>\n<p>T\u00e4t\u00e4 esimerkki\u00e4 varten aion perustaa valintaikkunan, joka n\u00e4ytt\u00e4\u00e4 800 \u00d7 600 pikseli\u00e4 ja jonka tunnus on <strong>acme-modal-dialog<\/strong>.<\/p>\n<p><strong>Huomautus<\/strong>: Muista, ett\u00e4 elementtien eteen kannattaa liitt\u00e4\u00e4 jotain, joka liittyy laajennuksen nimeen, jotta ristiriitoja ei synny.<\/p>\n<p>Joten luon ankkurin, joka <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1db21634b8b7a88a963b3875553d2539#file-02-adding-an-anchor-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">n\u00e4ytt\u00e4\u00e4 t\u00e4lt\u00e4<\/a> :<\/p>\n<pre><code>&lt;?php\n\/**\n * A basic plugin page that will eventually be used to demonstrate how to use the\n * Thickbox library included with WordPress.\n *\n * @package Acme\n *\/\nadd_thickbox();\n?&gt;\n\n&lt;div id=\"acme-thickbox-demo\" class=\"wrap\"&gt;\n\n  &lt;h1&gt;Acme Thickbox Demo&lt;\/h1&gt;\n  &lt;p&gt;Provides an exmaple of how to use the thickbox library within a WordPress plugin page.&lt;\/p&gt;\n\n  &lt;div id=\"acme-thickbox-content\"&gt;\n    &lt;a href=\"#\"&gt;Display The Dialog&lt;\/a&gt;\n  &lt;\/div&gt;&lt;!-- #acme-thickbox-content --&gt;\n\n&lt;\/div&gt;&lt;!-- #acme-thickbox-demo --&gt;<\/code><\/pre>\n<p>Ja sitten luon t\u00e4llaisen <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1db21634b8b7a88a963b3875553d2539#file-03-adding-the-modal-dialog-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">elementin<\/a> :<\/p>\n<pre><code>&lt;?php\n\/**\n * A basic plugin page that will eventually be used to demonstrate how to use the\n * Thickbox library included with WordPress.\n *\n * @package Acme\n *\/\nadd_thickbox();\n?&gt;\n\n&lt;div id=\"acme-thickbox-demo\" class=\"wrap\"&gt;\n\n  &lt;h1&gt;Acme Thickbox Demo&lt;\/h1&gt;\n  &lt;p&gt;Provides an exmaple of how to use the thickbox library within a WordPress plugin page.&lt;\/p&gt;\n\n  &lt;div id=\"acme-thickbox-content\"&gt;\n    &lt;a href=\"TB_inline?width=600&amp;height=550&amp;inlineId=acme-modal-dialog\" class=\"thickbox\"&gt;Display The Dialog&lt;\/a&gt;\n    &lt;div id=\"acme-modal-dialog\" style=\"display:none;\"&gt;&lt;\/div&gt;&lt;!-- #acme-modal-dialog --&gt;\n  &lt;\/div&gt;&lt;!-- #acme-thickbox-content --&gt;\n\n&lt;\/div&gt;&lt;!-- #acme-thickbox-demo --&gt;<\/code><\/pre>\n<p>Ja yll\u00e4 oleva koodi on my\u00f6s se, milt\u00e4 laajennussivun lopullinen versio n\u00e4ytt\u00e4\u00e4 t\u00e4lt\u00e4. Kun napsautat ankkuria, n\u00e4kyviin tulee tyhj\u00e4 valintaikkuna, jossa on m\u00e4\u00e4ritetyt mitat (eli 800 \u00d7 600 pikseli\u00e4).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165812-61e789a51e4aa.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165812-61e789a51e4aa.png\" alt=\"WordPressin modaalidialogien lis\u00e4\u00e4minen (sis\u00e4\u00e4nrakennetuilla kirjastoilla)\" ><\/a><\/p>\n<p>Tietenkin se on tyhj\u00e4, koska se ei n\u00e4yt\u00e4 mit\u00e4\u00e4n tietoja.<\/p>\n<h2>Datan n\u00e4ytt\u00e4minen<\/h2>\n<p>Sarjan seuraavassa viestiss\u00e4 k\u00e4yn l\u00e4pi, kuinka tietoja n\u00e4ytet\u00e4\u00e4n valintaikkunan yhteydess\u00e4.<\/p>\n<p>Se on helppoa, mutta se on hyv\u00e4 l\u00e4ht\u00f6kohta, jos haluat aloittaa dynaamisen tiedon sis\u00e4llytt\u00e4misen REST API:n tai Ajaxin kautta. Mutta k\u00e4sittelen sen ennen t\u00e4m\u00e4n loppua.<\/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>Mit\u00e4 tulee ratkaisujen kehitt\u00e4miseen asiakkaille, tulee joskus aikoja, jolloin joudut todenn\u00e4k\u00f6isesti n\u00e4ytt\u00e4m\u00e4\u00e4n tietoja WordPressin modaalisissa valintaikkunoissa.<\/p>\n","protected":false},"author":1,"featured_media":165813,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[895,843,864],"tags":[1166],"class_list":["post-229892","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-koodi","category-opetusohjelmia","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229892","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=229892"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229892\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/165813"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=229892"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=229892"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=229892"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}