{"id":229127,"date":"2022-11-13T10:10:00","date_gmt":"2022-11-13T07:10:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229127"},"modified":"2022-11-09T05:38:38","modified_gmt":"2022-11-09T02:38:38","slug":"laegga-till-wordpress-modal-dialoger-med-inbyggda-bibliotek","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/laegga-till-wordpress-modal-dialoger-med-inbyggda-bibliotek\/","title":{"rendered":"L\u00e4gga till WordPress Modal Dialoger (med inbyggda bibliotek)"},"content":{"rendered":"\n<p>N\u00e4r det g\u00e4ller att utveckla l\u00f6sningar f\u00f6r kunder kommer det att finnas tillf\u00e4llen d\u00e5 du sannolikt har till uppgift att visa information i WordPress modala dialogrutor.<\/p>\n<p>Det finns m\u00e5nga l\u00f6sningar tillg\u00e4ngliga f\u00f6r att g\u00f6ra detta och ju mer bekant du \u00e4r med JavaScript, olika bibliotek och de bibliotek som de har tillg\u00e4ngliga, desto sv\u00e5rare (eller kanske \u00e4r det \u00e4nnu enklare) \u00e4r det att v\u00e4lja vilket du ska anv\u00e4nda.<\/p>\n<p>Men WordPress har inbyggd infrastruktur som g\u00f6r det trivialt att integrera funktionalitet i WordPress. S\u00e5 i tre kommande inl\u00e4gg kommer jag att t\u00e4cka f\u00f6ljande:<\/p>\n<ol>\n<li>Hur man integrerar WordPress modala dialoger med inbyggda bibliotek,<\/li>\n<li>Fylla de modala dialogerna med data,<\/li>\n<li>Fyller den modala dialogrutan med dynamisk data via Ajax.<\/li>\n<\/ol>\n<p>P\u00e5 grund av seriens natur kommer inl\u00e4ggen inte att vara rygg mot rygg, men de kommer alla att anv\u00e4nda en unik tagg som du kan anv\u00e4nda f\u00f6r att bokm\u00e4rka och referera till som en serie n\u00e4r inl\u00e4ggen \u00e4r klara.<\/p>\n<p>Med det sagt, l\u00e5t oss prata om att enkelt integrera WordPress modala dialoger med inbyggda bibliotek.<\/p>\n<h2>WordPress Modal Dialogs, del 1<\/h2>\n<p>F\u00f6r att komma ig\u00e5ng antar jag att du har grunden f\u00f6r en administrationssida p\u00e5 plats.<\/p>\n<h3>P\u00e5 plugin-sidor<\/h3>\n<p>Det vill s\u00e4ga, du har allt du beh\u00f6ver f\u00f6r att f\u00e5 en plugin-inst\u00e4llning aktiverad och sedan en sida som visas via en meny eller undermeny.<\/p>\n<p>Om inte, kolla in det <a href=\"https:\/\/tommcfarlin.com\/wordpress-menu-page\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">h\u00e4r inl\u00e4gget<\/a> f\u00f6r att se hur du kommer ig\u00e5ng.<\/p>\n<p>N\u00e4r du har gjort det beh\u00f6ver du den grundl\u00e4ggande infrastrukturen f\u00f6r en plugin-sida. Den h\u00e4r sidan kan anv\u00e4ndas f\u00f6r att helt enkelt visa information eller s\u00e5 kan den anv\u00e4ndas b\u00e5de f\u00f6r att visa information och ge anv\u00e4ndaren m\u00f6jlighet att spara alternativ.<\/p>\n<p>F\u00f6r den h\u00e4r handledningen \u00e4r jag inte s\u00e4rskilt intresserad av att ge anv\u00e4ndaren m\u00f6jligheten att spara alternativ. Ist\u00e4llet m\u00e5ste vi skapa ett ankare som visar en modal dialogruta n\u00e4r du klickar p\u00e5 den.<\/p>\n<p>Och informationen som den kommer att inneh\u00e5lla kommer att behandlas i en senare handledning.<\/p>\n<h3>Ett exempel p\u00e5 plugin-sida<\/h3>\n<p>Vid det h\u00e4r laget antar jag att du har en plugin-sida. En grundl\u00e4ggande struktur f\u00f6r det kan se <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1db21634b8b7a88a963b3875553d2539#file-00-basic-plugin-page-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ut s\u00e5 h\u00e4r<\/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>D\u00e4rifr\u00e5n \u00e4r det tv\u00e5 saker som \u00e4r n\u00f6dv\u00e4ndiga:<\/p>\n<ol>\n<li>med Thickbox-biblioteket<\/li>\n<li>l\u00e4gga till ett ankare och en beh\u00e5llare som visar en modal dialogruta<\/li>\n<\/ol>\n<p>F\u00f6r att inf\u00f6rliva Thickbox-biblioteket i din plugin-sida, l\u00e4gg helt enkelt till den h\u00e4r taggen. Om du f\u00f6ljer n\u00e5gra kodningsstandarder har din sida sannolikt ett docblock h\u00f6gst upp p\u00e5 sidan. Det \u00e4r h\u00e4r jag normalt l\u00e4gger till koden.<\/p>\n<p>Add_thickbox <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_thickbox\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">&#8211;<\/a> funktionen \u00e4r en som tillhandah\u00e5lls av WordPress som g\u00f6r f\u00f6ljande:<\/p>\n<blockquote>\n<p>K\u00f6ar standard ThickBox js och css.<\/p>\n<\/blockquote>\n<p>Lite vagt, eller hur? Tekniskt sett \u00e4r den l\u00e4ngre beskrivningen:<\/p>\n<blockquote>\n<p>ThickBox \u00e4r en webbsidas UI-dialogwidget skriven i JavaScript ovanp\u00e5 jQuery-biblioteket. Dess funktion \u00e4r att visa en enda bild, flera bilder, inline-inneh\u00e5ll, iframed-inneh\u00e5ll eller inneh\u00e5ll som serveras genom AJAX i en hybridmodal.<\/p>\n<\/blockquote>\n<p>Och om du \u00e4r intresserad av Thickbox-biblioteket p\u00e5 egen hand kan du se det p\u00e5 den <a href=\"http:\/\/codylindley.com\/thickbox\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">h\u00e4r sidan<\/a>.<\/p>\n<p>Hur som helst, tillbaka till sidan. Nu n\u00e4r jag l\u00e4gger till den p\u00e5 min pluginsida med WordPress API-funktionen ser min sida ut ungef\u00e4r <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1db21634b8b7a88a963b3875553d2539#file-01-thickbox-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">s\u00e5 h\u00e4r<\/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>D\u00e4refter g\u00e5r att skapa ankaret och elementet f\u00f6r att visa data hand i hand med varandra, n\u00e4mligen eftersom ankaret beh\u00f6ver ID:t f\u00f6r elementet som kommer att fungera som den modala dialogrutan.<\/p>\n<p>Ankaret beh\u00f6ver f\u00f6ljande information:<\/p>\n<ul>\n<li>ID f\u00f6r elementet som ska visa modalen,<\/li>\n<li>dimensionerna f\u00f6r n\u00e4mnda modala dialog<\/li>\n<\/ul>\n<p>F\u00f6r det h\u00e4r exemplet kommer jag att st\u00e4lla in en dialogruta som visas i 800\u00d7600 pixlar och den kommer att ha ID:t f\u00f6r <strong>acme-modal-dialog<\/strong>.<\/p>\n<p><strong>Obs<\/strong>: Kom ih\u00e5g att det \u00e4r en bra id\u00e9 att prefixa dina element med n\u00e5got som \u00e4r relaterat till namnet p\u00e5 ditt plugin, s\u00e5 att inga konflikter uppst\u00e5r.<\/p>\n<p>S\u00e5 jag skapar ett ankare som <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1db21634b8b7a88a963b3875553d2539#file-02-adding-an-anchor-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ser ut s\u00e5 h\u00e4r<\/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>Och sedan ska jag skapa ett element <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1db21634b8b7a88a963b3875553d2539#file-03-adding-the-modal-dialog-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">s\u00e5 h\u00e4r<\/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>Och ovanst\u00e5ende kod \u00e4r hur den slutliga versionen av pluginsidan kommer att se ut s\u00e5 h\u00e4r ocks\u00e5. N\u00e4r du klickar p\u00e5 ankaret ska en tom dialogruta visas med de angivna m\u00e5tten (det vill s\u00e4ga 800\u00d7600 pixlar).<\/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=\"L\u00e4gga till WordPress Modal Dialoger (med inbyggda bibliotek)\" ><\/a><\/p>\n<p>Naturligtvis kommer det att vara tomt eftersom det inte kommer att visa n\u00e5gra data.<\/p>\n<h2>Visar data<\/h2>\n<p>I n\u00e4sta inl\u00e4gg i serien kommer jag att g\u00e5 igenom hur man visar data inom ramen f\u00f6r dialogrutan.<\/p>\n<p>Det \u00e4r enkelt, men det \u00e4r en bra utg\u00e5ngspunkt om du vill b\u00f6rja inf\u00f6rliva dynamisk data via REST API eller Ajax. Men jag ska t\u00e4cka det innan slutet av detta.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>N\u00e4r det kommer till att utveckla l\u00f6sningar f\u00f6r kunder kommer det att finnas tillf\u00e4llen d\u00e5 du sannolikt har i uppdrag att visa information i WordPress modala dialogrutor.<\/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":[848,901,868],"tags":[1173],"class_list":["post-229127","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-handledningar","category-koda","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/229127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=229127"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/229127\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/165813"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=229127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=229127"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=229127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}