{"id":229354,"date":"2022-10-30T13:20:00","date_gmt":"2022-10-30T10:20:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229354"},"modified":"2022-11-09T06:38:34","modified_gmt":"2022-11-09T03:38:34","slug":"wordpress-laajennusliitaennaet-resurssien-kaeyttaeminen","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/wordpress-laajennusliitaennaet-resurssien-kaeyttaeminen\/","title":{"rendered":"WordPress-laajennusliit\u00e4nn\u00e4t: resurssien k\u00e4ytt\u00e4minen"},"content":{"rendered":"\n<p>Yksi olio-ohjelmoinnin eduista on kyky m\u00e4\u00e4ritt\u00e4\u00e4 rajapinnat siten, ett\u00e4 luokilla, jotka toteuttavat n\u00e4m\u00e4 rajapinnat, on tiukka joukko toimintoja, jotka mainittujen luokkien on toteutettava.<\/p>\n<p>T\u00e4m\u00e4 on joka tapauksessa luokkaliittym\u00e4n <a href=\"https:\/\/stackoverflow.com\/a\/1022066\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">m\u00e4\u00e4ritelm\u00e4 :<\/a><\/p>\n<blockquote>\n<p>K\u00e4ytt\u00f6liittym\u00e4 on sopimus, joka m\u00e4\u00e4ritt\u00e4\u00e4 joukon menetelmi\u00e4, kentti\u00e4 ja ominaisuuksia, jotka ovat k\u00e4ytett\u00e4viss\u00e4 miss\u00e4 tahansa toteutusobjektissa<\/p>\n<\/blockquote>\n<p>Mutta milt\u00e4 t\u00e4m\u00e4 voisi n\u00e4ytt\u00e4\u00e4, jos aiomme luoda nimiavaruusratkaisun WordPress-laajennusliit\u00e4nt\u00f6jen (tai k\u00e4ytt\u00f6liittym\u00e4n) sis\u00e4llytt\u00e4miseen luokalle, jota voidaan k\u00e4ytt\u00e4\u00e4 tyylitaulukoiden tai JavaScript-tiedostojen jonoon?<\/p>\n<h2>WordPress-laajennusten k\u00e4ytt\u00f6liittym\u00e4t: Assets<\/h2>\n<p>T\u00e4t\u00e4 viesti\u00e4 varten oletetaan, ett\u00e4 m\u00e4\u00e4rittelemme k\u00e4ytt\u00f6liittym\u00e4n, jota k\u00e4ytet\u00e4\u00e4n WordPressin hallinta-alueella. Eli luomme k\u00e4ytt\u00f6liittym\u00e4n, jota k\u00e4ytet\u00e4\u00e4n tyylitaulukoiden ja JavaScript-tiedostojen jonoon.<\/p>\n<p>Meid\u00e4n on sis\u00e4llytett\u00e4v\u00e4 seuraavat asiat:<\/p>\n<ul>\n<li>nimiavaruus, jota voidaan k\u00e4ytt\u00e4\u00e4 koko projektin ajan,<\/li>\n<li>luokan alustustoiminto,<\/li>\n<li>toiminto, jolla varsinaisesti asetetaan jonoon.<\/li>\n<\/ul>\n<p>Ja koska t\u00e4m\u00e4 on tarpeeksi yleinen, jotta sit\u00e4 voidaan k\u00e4ytt\u00e4\u00e4 JavaScriptiss\u00e4 ja tyylitaulukoissa, olen valinnut sen nimeksi yksinkertaisesti <strong>Asset<\/strong>.<\/p>\n<p>Lopputulos voi n\u00e4ytt\u00e4\u00e4 <a href=\"https:\/\/gist.github.com\/tommcfarlin\/30521dcf0c493283327bf9162c7b9a35#file-00-interface-asset-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4lt\u00e4<\/a> :<\/p>\n<pre><code>&lt;?php\n\nnamespace AcmeAdminInterfaces;\n\ninterface Asset {\n\n    public function init();\n    public function enqueue();\n}\n<\/code><\/pre>\n<p>Seuraavaksi meid\u00e4n on todella <a href=\"https:\/\/gist.github.com\/tommcfarlin\/30521dcf0c493283327bf9162c7b9a35#file-01-javascript-asset-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">toteutettava k\u00e4ytt\u00f6liittym\u00e4<\/a> luokan kanssa. Sen pit\u00e4isi olla suhteellisen yksinkertaista, koska olemme m\u00e4\u00e4ritt\u00e4neet menetelm\u00e4t, jotka on toteutettava.<\/p>\n<p>Huomaa kuitenkin, ett\u00e4 tarjoan pari ominaisuutta, jotka on asetettu luokan konstruktoriin. N\u00e4m\u00e4 ovat ominaisia \u200b\u200bt\u00e4lle luokalle ja helpottavat tiedoston jonottamisesta.<\/p>\n<pre><code>&lt;?php\n\nnamespace AcmeAdmin;\nuse AcmeAdminInterfaces;\n\nclass JavaScript_Assets implements InterfacesAsset {\n\n    private $assets_dir;\n\n    private $js_dir;\n\n    public function __construct() {\n\n        $this-&gt;assets_dir = trailingslashit(\n            plugin_dir_url( __FILE__ ). 'assets'\n        );\n\n        $this-&gt;js_dir = trailingslashit( $this-&gt;assets_dir. 'js' );\n    }\n\n    public function init() {\n\n        add_action(\n            'admin_enqueue_scripts',\n            array( $this, 'enqueue') );\n    }\n\n    public function enqueue() {\n\n        wp_enqueue_script(\n            'toggle-admin-notices',\n            $this-&gt;js_dir. 'admin.js',\n            array( 'jquery' ),\n            false\n        );\n    }\n}\n<\/code><\/pre>\n<p>Muutama huomioitavaa yll\u00e4 olevasta koodista:<\/p>\n<ul>\n<li>se k\u00e4ytt\u00e4\u00e4 <strong>avainsanaa use<\/strong>, jotta PHP tiet\u00e4\u00e4, ett\u00e4 ty\u00f6skentelemme <strong>Asset<\/strong> &#8211; k\u00e4ytt\u00f6liittym\u00e4n kanssa,<\/li>\n<li>Olen lis\u00e4nnyt nimen etuliitteen <strong>JavaScriptill\u00e4<\/strong>, jotta on selv\u00e4\u00e4, mink\u00e4 tyyppisen resurssin kanssa ty\u00f6skentelen.<\/li>\n<\/ul>\n<p>Lopuksi luodaksesi k\u00e4ytt\u00f6liittym\u00e4n toteuttavan luokan, teet vain <a href=\"https:\/\/gist.github.com\/tommcfarlin\/30521dcf0c493283327bf9162c7b9a35#file-02-class-instantiation-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">n\u00e4in<\/a> :<\/p>\n<pre><code>&lt;?php\n\n$assets = new AdminJavaScript_Assets();\n$assets-&gt;init();\n<\/code><\/pre>\n<p>Toki t\u00e4m\u00e4 esimerkki on yksinkertainen, ja olen j\u00e4tt\u00e4nyt tavalliset koodikommentit pois, mutta se on yleens\u00e4 luettavuuden vuoksi. Jos haluat n\u00e4hd\u00e4 jotain t\u00e4llaista toiminnassa, tarkista l\u00e4hdekoodi<\/p>\n<p>Jos haluat n\u00e4hd\u00e4 jotain t\u00e4llaista toiminnassa, tarkista <a href=\"https:\/\/github.com\/tommcfarlin\/toggle-admin-notices\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4m\u00e4n laajennuksen<\/a> l\u00e4hdekoodi .<\/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>Milt\u00e4 n\u00e4ytt\u00e4\u00e4, jos aiomme luoda ratkaisun WordPress-laajennusten k\u00e4ytt\u00f6liittymille luokalle, jota voidaan k\u00e4ytt\u00e4\u00e4 resurssien jonoon?<\/p>\n","protected":false},"author":1,"featured_media":220968,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[719,895,917,843,864],"tags":[1166],"class_list":["post-229354","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-koodi","category-muut","category-opetusohjelmia","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229354","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=229354"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229354\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/220968"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=229354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=229354"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=229354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}