{"id":233606,"date":"2023-02-18T20:19:00","date_gmt":"2023-02-18T17:19:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233606"},"modified":"2023-02-23T17:45:45","modified_gmt":"2023-02-23T14:45:45","slug":"kaeyttoeliittymaelomakkeen-luominen-acf-llae","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/kaeyttoeliittymaelomakkeen-luominen-acf-llae\/","title":{"rendered":"K\u00e4ytt\u00f6liittym\u00e4lomakkeen luominen ACF:ll\u00e4"},"content":{"rendered":"\n<p>T\u00e4ss\u00e4 opetusohjelmassa n\u00e4yt\u00e4n sinulle, kuinka voit luoda k\u00e4ytt\u00f6liittym\u00e4lomakkeen Advanced Custom Fields (ACF) -kentill\u00e4. Kerron yksityiskohtaisesti, kuinka se toimii ja kuinka voit muokata sit\u00e4 tarpeidesi mukaan.<\/p>\n<p><a href=\"https:\/\/www.advancedcustomfields.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Advanced Custom Fields<\/a> (ACF) on ilmainen laajennus, jonka avulla voit lis\u00e4t\u00e4 useiden tyyppisten kentt\u00e4asetuksia l\u00e4hes kaikentyyppiseen WordPressin sis\u00e4lt\u00f6\u00f6n. Voit lis\u00e4t\u00e4 kentti\u00e4 viesteihin, taksonomioihin, valikoihin, widgeteihin, k\u00e4ytt\u00e4jiin ja jopa mukautetuille j\u00e4rjestelm\u00e4nvalvojan sivuille. Sen p\u00e4\u00e4k\u00e4ytt\u00f6 on j\u00e4rjestelm\u00e4nvalvojalle, mutta voit k\u00e4ytt\u00e4\u00e4 sit\u00e4 my\u00f6s kenttien luomiseen k\u00e4ytt\u00f6liittym\u00e4ss\u00e4.<\/p>\n<p>Sovelluksia ACF-kenttien lis\u00e4\u00e4miseksi k\u00e4ytt\u00f6liittym\u00e4\u00e4n on monia; voit lis\u00e4t\u00e4 lomakkeen julkaisujen, luokkien tai k\u00e4ytt\u00e4jien luomista ja p\u00e4ivitt\u00e4mist\u00e4 varten. Jollakin koodilla voit jopa luoda yleisen yhteydenottolomakkeen, jossa vastaukset tallennetaan mukautettuina postaustyyppisin\u00e4 viestein\u00e4 ja koodi laukaisee s\u00e4hk\u00f6posti-ilmoitukset lomakevastauksista. Aivan kuten normaali yhteydenottolomake. ACF-k\u00e4ytt\u00f6liittym\u00e4n lomaketoimintojen k\u00e4ytt\u00e4minen lomakkeiden luomiseen ja vierailijoiden luoda tai muokata sivuston sis\u00e4lt\u00f6\u00e4 ilman kirjautumista ovat yleisi\u00e4 k\u00e4ytt\u00f6tarkoituksia. Mutta k\u00e4yt\u00e4 t\u00e4t\u00e4 varoen. T\u00e4m\u00e4 avaa helposti roskapostia ja v\u00e4\u00e4rink\u00e4ytt\u00f6\u00e4, ja pahimmassa tapauksessa vierailijat voivat tuhota sivustosi sis\u00e4ll\u00f6n tai asetukset. Sinun tulisi ainakin vaatia vierailijoita kirjautumaan sis\u00e4\u00e4n kelvollisilla k\u00e4ytt\u00e4jill\u00e4, jotta he p\u00e4\u00e4sev\u00e4t k\u00e4ytt\u00e4m\u00e4\u00e4n lomakkeita, jotka voivat muuttaa kriittist\u00e4 WordPress-sis\u00e4lt\u00f6\u00e4 (k\u00e4ytt\u00e4j\u00e4profiili, viestit jne.).<\/p>\n<h2>Mit\u00e4 teemme<\/h2>\n<p>Oletan, ett\u00e4 WordPress-sivusto on m\u00e4\u00e4ritt\u00e4nyt joukon lis\u00e4kentti\u00e4 k\u00e4ytt\u00e4jille, joilla on mukautettu rooli (&#8217; <code>member<\/code>&#8217;) ACF:n avulla. N\u00e4ill\u00e4 k\u00e4ytt\u00e4jill\u00e4 ei ole lainkaan j\u00e4rjestelm\u00e4nvalvojan oikeuksia, mutta haluamme tarjota heille mahdollisuuden muokata omia kentti\u00e4\u00e4n profiilissaan. Ratkaisu, jonka olen valinnut, on luoda mukautettu sivumalli heid\u00e4n profiilinsa p\u00e4ivitt\u00e4mist\u00e4 varten ja n\u00e4ytt\u00e4\u00e4 lomakkeen vain, jos he ovat kirjautuneita ja heill\u00e4 on oikea rooli.<\/p>\n<p>Pid\u00e4n sen t\u00e4ss\u00e4 opetusohjelmassa melko yksinkertaisena, joten en sis\u00e4llyt\u00e4 esimerkki\u00e4 tavallisten k\u00e4ytt\u00e4j\u00e4profiilikenttien lis\u00e4\u00e4misest\u00e4 WordPressiin (s\u00e4hk\u00f6posti, salasana jne.). Se j\u00e4\u00e4 hieman t\u00e4m\u00e4n opetusohjelman ulkopuolelle. Sallin vain ACF-kenttien muokkaamisen t\u00e4ll\u00e4 muokkausprofiilisivulla.<\/p>\n<p>ACF:n avulla olen luonut kentt\u00e4ryhm\u00e4n, jossa on joukko asetuksia j\u00e4senk\u00e4ytt\u00e4jille:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152752-61e4fa3424bfa.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-152752-61e4fa3424bfa.png\" alt=\"K\u00e4ytt\u00f6liittym\u00e4lomakkeen luominen ACF:ll\u00e4\"><\/a><\/p>\n<p>Ja minulla on teemassani mukautettu sivumalli, joka n\u00e4ytt\u00e4\u00e4 t\u00e4ll\u00e4 hetkell\u00e4 t\u00e4lt\u00e4 \u2013 t\u00e4ll\u00e4 hetkell\u00e4 vain tavallinen yhden sivun malli;<\/p>\n<pre><code>&lt;?php \n\/* Template Name: ACF Profile Page *\/\nget_header(); ?&gt;\n&lt;main class=\"content\"&gt;\n    &lt;?php if (have_posts()) { \n        while (have_posts()): the_post(); ?&gt;\n        &lt;article id=\"post-&lt;?php the_ID() ?&gt;\" &lt;?php post_class(); ?&gt;&gt;\n            &lt;h2 class=\"page-title\"&gt;&lt;?php the_title(); ?&gt;&lt;\/h2&gt;\n            &lt;?php the_content(''); ?&gt;\n            &lt;?php \n            if (is_user_logged_in() &amp;&amp; current_user_can('member')) {\n                \/\/ Profile settings here\n            }\n            ?&gt;\n        &lt;\/article&gt;\n    &lt;?php endwhile;\n    } ?&gt;\n&lt;\/main&gt;\n&lt;?php \nget_sidebar();\nget_footer();<\/code><\/pre>\n<p>Tarkistamme rivill\u00e4 <code>#11<\/code>, onko nykyinen k\u00e4ytt\u00e4j\u00e4 kirjautunut sis\u00e4\u00e4n ja onko h\u00e4nell\u00e4 mukautettu rooli <code>member<\/code>. Muuta rooli tai v\u00e4himm\u00e4iss\u00e4\u00e4nt\u00f6 mihin tahansa, johon haluat sallia t\u00e4m\u00e4n k\u00e4ytt\u00f6liittym\u00e4lomakkeen. Muista vain, ett\u00e4 jopa WordPressin alimmilla roolilla, <code>subscriber<\/code>, on oikeus muokata profiiliaan hallintapaneelissa.<\/p>\n<p>Lyhyesti sanottuna haluamme lis\u00e4t\u00e4 n\u00e4m\u00e4 kent\u00e4t jokaiselle j\u00e4senelle t\u00e4lle mukautetulle k\u00e4ytt\u00f6liittym\u00e4lle:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152752-61e4fa37478d8.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-152752-61e4fa37478d8.png\" alt=\"K\u00e4ytt\u00f6liittym\u00e4lomakkeen luominen ACF:ll\u00e4\"><\/a><\/p>\n<h2>Kuinka ACF-k\u00e4ytt\u00f6liittym\u00e4lomakkeet toimivat<\/h2>\n<p>Sinun on lis\u00e4tt\u00e4v\u00e4 kaksi funktiokutsua malliin, johon haluat k\u00e4ytt\u00f6liittym\u00e4lomakkeen; <code>[acf_form_head](https:\/\/www.advancedcustomfields.com\/resources\/acf_form_head\/)()<\/code>ja <code>[acf_form](https:\/\/www.advancedcustomfields.com\/resources\/acf_form\/)()<\/code>.<\/p>\n<p>Funktio <code>acf_form_head()<\/code>on sijoitettava mallin yl\u00e4osaan ennen tulosta. Yleens\u00e4 mallissa t\u00e4m\u00e4 tarkoittaa ennen <code>[get_header](https:\/\/developer.wordpress.org\/reference\/functions\/get_header\/)()<\/code>. Funktiokutsu varmistaa, ett\u00e4 kaikki komentosarjat ja tyylit lis\u00e4t\u00e4\u00e4n, jotta ACF-kent\u00e4t hahmonnetaan oikein, sek\u00e4 kaikki toiminnot ty\u00f6n k\u00e4sittely\u00e4, validointia ja l\u00e4hett\u00e4mist\u00e4 varten. Meid\u00e4n ei tarvitse lis\u00e4t\u00e4 parametreja t\u00e4h\u00e4n funktioon.<\/p>\n<p>Funktio <code>acf_form()<\/code>on se, joka hahmontaa k\u00e4ytt\u00f6liittym\u00e4lomakkeen, ja se tulee sijoittaa kohtaan, jossa haluat lomakkeen n\u00e4kyv\u00e4n. Se hyv\u00e4ksyy joukon asetuksia. Meid\u00e4n on v\u00e4hint\u00e4\u00e4n ilmoitettava, mitk\u00e4 kent\u00e4t tai ryhm\u00e4t n\u00e4ytet\u00e4\u00e4n ja mihin ne tallennetaan.<\/p>\n<p>Kun on p\u00e4\u00e4tett\u00e4v\u00e4 n\u00e4ytett\u00e4v\u00e4t kent\u00e4t, sinun on yleens\u00e4 annettava kentt\u00e4ryhm\u00e4 (ominaisuus <code>field_groups<\/code>). Mutta <code>acf_form()<\/code>toiminto tukee my\u00f6s tiettyjen yksitt\u00e4isten kenttien tarjoamista (ominaisuus <code>fields<\/code>). Voit my\u00f6s m\u00e4\u00e4ritt\u00e4\u00e4 useita kentti\u00e4 tai kentt\u00e4ryhmi\u00e4 yhdist\u00e4\u00e4ksesi ne samaan lomakkeeseen. T\u00e4m\u00e4n vuoksi <code>field_groups<\/code>odottaa array. Joten vaikka haluat n\u00e4ytt\u00e4\u00e4 vain yhden kentt\u00e4ryhm\u00e4n, sinun on annettava kyseinen tunnus tai slug taulukon sis\u00e4ll\u00e4.<\/p>\n<p>Toinen pakollinen ominaisuus, joka sinun on annettava lomakkeella, <code>acf_form()<\/code>on se, mist\u00e4 tiedot ladataan ja mihin ne tulisi tallentaa, omaisuuteen <code>post_id<\/code>. \u00c4l\u00e4 mene lankaan nimest\u00e4 &quot;posti&quot;. S\u00e4\u00e4nn\u00f6t <code>post_id<\/code>ovat samat k\u00e4ytett\u00e4ess\u00e4 <code>get_field()<\/code>, jos olet perehtynyt ACF:n kanssa ty\u00f6skentelyyn aikaisemmin. Jos kent\u00e4t koskevat viesti\u00e4 (viesti, sivu, mukautetun postaustyypin viesti), sinun tarvitsee vain antaa tunnus t\u00e4h\u00e4n. Mutta jos haluat ladata ja p\u00e4ivitt\u00e4\u00e4 tietoja k\u00e4ytt\u00e4jist\u00e4, noudata t\u00e4t\u00e4 muotoa: <code>user_{user ID}<\/code>. Samoin luokan kenttien kanssa: <code>category_{category ID}<\/code>. Tarkista kaikki s\u00e4\u00e4nn\u00f6t otsikon &quot;Hae arvo eri kohteista&quot; <a href=\"https:\/\/www.advancedcustomfields.com\/resources\/get_field\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">alta ACF:n dokumentaatiossa osoitteessa<code>get_field()<\/code><\/a>.<\/p>\n<h2>ACF-k\u00e4ytt\u00f6liittym\u00e4lomakkeen lis\u00e4\u00e4minen malliimme<\/h2>\n<p>Ensin lis\u00e4\u00e4mme merkin <code>acf_form_head()<\/code>aivan yl\u00e4reunaan, juuri ennen <code>get_header()<\/code>&#8211; mutta j\u00e4lkeen sivumallin ilmoituksen (rivi <code>#3<\/code>). Sitten paikkaan, jossa haluamme hahmontaa lomakkeen, lis\u00e4\u00e4mme <code>acf_form()<\/code>kahdella ominaisuudella.<\/p>\n<p>Meid\u00e4n on selvitett\u00e4v\u00e4 kentt\u00e4ryhm\u00e4mme tunnus. Jos lis\u00e4sit kentt\u00e4ryhm\u00e4n koodin mukaan (minulla on <a href=\"https:\/\/wordpress.mediadoma.com\/fi\/taeydellinen-viite-tarkennettujen-mukautettujen-kenttaeryhmien-ja-kenttien-lisaeaemiseen-koodin-mukaan\/\" title=\"viesti, jossa k\u00e4sitell\u00e4\u00e4n perusteellisesti ACF-kenttien lis\u00e4\u00e4mist\u00e4 koodin mukaan\">viesti, jossa k\u00e4sitell\u00e4\u00e4n perusteellisesti ACF-kenttien lis\u00e4\u00e4mist\u00e4 koodin mukaan<\/a> ), olet jo toimittanut kentt\u00e4ryhm\u00e4n etanan. Antaisit sitten etanan <code>field_groups<\/code>kiinteist\u00f6\u00f6n joukkona. Jos lis\u00e4sit kentt\u00e4ryhm\u00e4n hallintapaneeliin, sinun on avattava ryhm\u00e4 selaimessa ja tarkistettava URL-osoite. Olemme kiinnostuneita tunnuksesta, joka n\u00e4kyy &quot; <code>?post=<\/code>&quot; j\u00e4lkeen:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152752-61e4fa3a1621b.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-152752-61e4fa3a1621b.png\" alt=\"K\u00e4ytt\u00f6liittym\u00e4lomakkeen luominen ACF:ll\u00e4\"><\/a><\/p>\n<p>Esimerkiss\u00e4ni tunnus on <code>1145<\/code>. Sitten tarjoan sen joukossa <code>field_groups<\/code>.<\/p>\n<p>PS: En suosittele tunnuksen kovakoodausta, koska t\u00e4m\u00e4 tunnus on erilainen jokaisessa WordPress-esiintym\u00e4ss\u00e4! Jos ty\u00f6skentelet paikallisen asennuksen sek\u00e4 lavastus- ja tuotantopalvelimen parissa, suosittelen ehdottomasti lis\u00e4\u00e4m\u00e4\u00e4n kent\u00e4t koodin mukaan. N\u00e4in voit m\u00e4\u00e4ritt\u00e4\u00e4 kentt\u00e4ryhm\u00e4n nimen ja se toimii kaikkialla.<\/p>\n<p>Mit\u00e4 tulee <code>post_id<\/code>omaisuuteen, saan nykyisen k\u00e4ytt\u00e4j\u00e4tunnuksen WordPress-toiminnolla <code>[get_current_user_id](https:\/\/developer.wordpress.org\/reference\/functions\/get_current_user_id\/)()<\/code>. Yhdist\u00e4n merkkijonon &quot; <code>user_<\/code>&quot; ja t\u00e4m\u00e4n funktion palautuksen muodossa <code>post_id<\/code>.<\/p>\n<pre><code>&lt;?php \n\/* Template Name: ACF Profile Page *\/\nacf_form_head();\nget_header(); ?&gt;\n&lt;main class=\"content\"&gt;\n    &lt;?php if (have_posts()) { \n        while (have_posts()): the_post(); ?&gt;\n        &lt;article id=\"post-&lt;?php the_ID() ?&gt;\" &lt;?php post_class(); ?&gt;&gt;\n            &lt;h2 class=\"page-title\"&gt;&lt;?php the_title(); ?&gt;&lt;\/h2&gt;\n            &lt;?php the_content(''); ?&gt;\n            &lt;?php \n            if (is_user_logged_in() &amp;&amp; current_user_can('member')) {\n                $current_user_id = get_current_user_id();\n                acf_form([\n                    'field_groups' =&gt; [1145],\n                    'post_id' =&gt; 'user_'. $current_user_id\n                ]);\n            }\n            ?&gt;\n        &lt;\/article&gt;\n    &lt;?php endwhile;\n    } ?&gt;\n&lt;\/main&gt;\n&lt;?php \nget_sidebar();\nget_footer();<\/code><\/pre>\n<p>Ja siin\u00e4 se periaatteessa on!<\/p>\n<p>Jos k\u00e4yn t\u00e4ll\u00e4 sivulla kirjautuneena sis\u00e4\u00e4n j\u00e4senk\u00e4ytt\u00e4j\u00e4n\u00e4, saisin kyseisen k\u00e4ytt\u00e4j\u00e4n nykyiset arvot. Kaikki ACF-kentt\u00e4tyypit toimivat ja n\u00e4ytt\u00e4v\u00e4t hyv\u00e4lt\u00e4. Ja voin p\u00e4ivitt\u00e4\u00e4 arvot k\u00e4ytt\u00f6liittym\u00e4lomakkeella ja n\u00e4hd\u00e4, ett\u00e4 ne p\u00e4ivitet\u00e4\u00e4n my\u00f6s adminissa.<\/p>\n<h2>Lomakkeen muokkaaminen edelleen<\/h2>\n<p>Voimme s\u00e4\u00e4t\u00e4\u00e4 edelleen k\u00e4ytt\u00e4j\u00e4lle siirrettyj\u00e4 asetuksia <code>acf_form()<\/code>. Katso kaikki mahdolliset asetukset <a href=\"https:\/\/www.advancedcustomfields.com\/resources\/acf_form\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ACF:n dokumentaatiosta acf_form() -muodossa .<\/a><\/p>\n<p>T\u00e4ll\u00e4 hetkell\u00e4 k\u00e4ytt\u00e4j\u00e4profiililomakkeessamme n\u00e4kyy &quot;P\u00e4ivitetty&quot;, kun asetukset on l\u00e4hetetty. T\u00e4m\u00e4 ei ole j\u00e4rkev\u00e4\u00e4 profiiliasetuksissa. Voimme mukauttaa viestin kiinteist\u00f6n mukaan <code>updated_message<\/code>.<\/p>\n<pre><code>acf_form([\n    'field_groups' =&gt; [1145],\n    'post_id' =&gt; 'user_'. $current_user_id,\n    'updated_message' =&gt; __('User profile updated.', 'txtdomain')\n]);<\/code><\/pre>\n<p>Jos haluat, voit m\u00e4\u00e4ritt\u00e4\u00e4 toisen URL-osoitteen, johon ohjataan lomakkeen l\u00e4hett\u00e4misen j\u00e4lkeen. Oletuksena sama sivu latautuu uudelleen GET-parametrilla &#8217; <code>?updated=true<\/code>&#8217;. Voit m\u00e4\u00e4ritt\u00e4\u00e4 kiitossivulle tietyn URL-osoitteen, tai jos lomake on viesti\u00e4 varten, voit halutessasi ohjata tarkastelemaan kyseist\u00e4 viesti\u00e4. Voimme toimittaa URL-osoitteen kiinteist\u00f6\u00f6n <code>return<\/code>.<\/p>\n<pre><code>acf_form([\n    'field_groups' =&gt; [1145],\n    'post_id' =&gt; 'user_'. $current_user_id,\n    'return' =&gt; home_url('thank-you')\n]);<\/code><\/pre>\n<p>Jos haluamme eri tekstin lomakkeen l\u00e4hetyspainikkeeseen, voimme m\u00e4\u00e4ritt\u00e4\u00e4 t\u00e4m\u00e4n ominaisuudessa <code>submit_value<\/code>.<\/p>\n<pre><code>acf_form([\n    'field_groups' =&gt; [1145],\n    'post_id' =&gt; 'user_'. $current_user_id,\n    'submit_value' =&gt; __('Update profile', 'txtdomain')\n]);<\/code><\/pre>\n<p>Voit my\u00f6s kielt\u00e4\u00e4 tagin <code>acf_form()<\/code>hahmontamisen. <code>&lt;form&gt;<\/code>Jos haluat yhdist\u00e4\u00e4 ACF:n lomakkeen omaan mukautettuun lomakkeeseen, voit m\u00e4\u00e4ritt\u00e4\u00e4 <code>form<\/code>ja kirjoittaa <code>false<\/code>manuaalisesti. Jos teet t\u00e4m\u00e4n, ACF voi silti p\u00e4ivitt\u00e4\u00e4 arvot, mutta sinun on huolehdittava mukautetun lomakkeen muiden kenttien p\u00e4ivitt\u00e4misest\u00e4.<code>&lt;form&gt;``&lt;input type=\"submit\"\/&gt;<\/code><\/p>\n<pre><code>&lt;form method=\"POST\"&gt;\n    &lt;input type=\"text\" name=\"my-custom-input\" value=\"\" \/&gt;\n    &lt;?php\n    acf_form([\n        'field_groups' =&gt; [1145],\n        'post_id' =&gt; 'user_'. $current_user_id,\n        'form' =&gt; false\n    ]);\n    ?&gt;\n    &lt;input type=\"submit\" value=\"&lt;?php _e('Submit', 'txtdomain'); ?&gt;\" \/&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<h2>Toimintojen k\u00e4ynnist\u00e4minen lomakkeen l\u00e4hetyksen yhteydess\u00e4<\/h2>\n<p>Joskus saatat haluta k\u00e4ynnist\u00e4\u00e4 mukautetun toiminnon tai tapahtuman, kun k\u00e4ytt\u00f6liittym\u00e4lomake p\u00e4ivitet\u00e4\u00e4n. Yleinen esimerkki on funktion kirjoittaminen, joka l\u00e4hett\u00e4\u00e4 s\u00e4hk\u00f6posti-ilmoituksen jokaisen lomakkeen l\u00e4hetyksen yhteydess\u00e4.<\/p>\n<p>Advanced Custom Fields tarjoaa kaksi hy\u00f6dyllist\u00e4 koukkua kentti\u00e4 p\u00e4ivitett\u00e4ess\u00e4; toiminta <code>[acf\/save_post](https:\/\/www.advancedcustomfields.com\/resources\/acf-save_post\/)<\/code>ja suodatin <code>[acf\/pre_save_post](https:\/\/www.advancedcustomfields.com\/resources\/acf-pre_save_post\/)<\/code>. J\u00e4lleen, \u00e4l\u00e4 mene lankaan nimest\u00e4 &quot;posti&quot;. Ne k\u00e4ynnistet\u00e4\u00e4n kaikissa ACF-kenttien p\u00e4ivityksess\u00e4, mukaan lukien kent\u00e4t k\u00e4ytt\u00e4j\u00e4lle, kategorialle, valikoille ja niin edelleen.<\/p>\n<p>Suodatin <code>acf\/pre_save_post<\/code>suoritetaan <strong>vain<\/strong> k\u00e4ytt\u00f6liittym\u00e4lomakkeissa, joissa k\u00e4ytet\u00e4\u00e4n <code>acf_form()<\/code>. T\u00e4m\u00e4n suodattimen parametrina saamme <code>post_id<\/code>, saman arvon kuin olemme sy\u00f6tt\u00e4neet <code>post_id<\/code>yll\u00e4 <code>acf_form()<\/code>. Suodatin odottaa sinun palaavan <code>post_id<\/code>. Muista, ett\u00e4 meid\u00e4n on j\u00e4sennett\u00e4v\u00e4 t\u00e4m\u00e4, jos emme viittaa viestitunnukseen. Esimerkiksi k\u00e4ytt\u00e4j\u00e4lle sinun on teht\u00e4v\u00e4 jotain:<\/p>\n<pre><code>add_filter('acf\/pre_save_post', function($post_id) {\n    if (strpos($post_id, 'user_') === false) {\n        return $post_id;\n    }\n\u00a0\n    $user_id = intval(substr($post_id, 5));  \/\/ Extracts the user ID\n\u00a0\n    \/\/ Do your thing. You'll find the submitted values in $_POST\n\u00a0\n    return $post_id;\n});<\/code><\/pre>\n<p>Vaihtoehtoisesti voit k\u00e4ytt\u00e4\u00e4 koukkua <code>acf\/save_post<\/code>\u2013 mutta muista, ett\u00e4 se laukeaa my\u00f6s adminissa. T\u00e4m\u00e4n koukun parametrina saat <code>post_id<\/code>saman kuin <code>acf\/pre_save_post<\/code>. T\u00e4rke\u00e4 asia, joka on muistettava k\u00e4ytett\u00e4ess\u00e4 <code>acf\/save_post<\/code>, ett\u00e4 voit k\u00e4ytt\u00e4\u00e4 koukkuprioriteettia m\u00e4\u00e4ritt\u00e4\u00e4ksesi, suoritetaanko funktio ennen kenttien tallentamista vai sen j\u00e4lkeen. Toiminto, joka on kytketty prioriteettiin 10 tai korkeammalle, k\u00e4ynnistyy, kun kent\u00e4t on tallennettu. Ja prioriteetti, joka on alle 10, laukeaa ennen kuin ACF tallentaa arvot.<\/p>\n<pre><code>add_action('acf\/save_post', function($post_id) {\n    \/\/ You can fetch the values with standard get_field()\n});\n\u00a0\nadd_action('acf\/save_post', function($post_id) {\n    \/\/ You can access the submitted values in $_POST\n}, 8);<\/code><\/pre>\n<p>Kun olet kytkenyt toiminnon ennen tallennusta (prioriteetti alle 10), voit verrata l\u00e4hetettyj\u00e4 arvoja siihen, mit\u00e4 ACF tallentaa. Voit <code>get_field()<\/code>saada nykyisen arvon ja verrata niit\u00e4 vastaavaan arvoon kohdassa <code>$_POST<\/code>.<\/p>\n<p>Jos haluat tehd\u00e4 jotain vasta, kun kent\u00e4t on p\u00e4ivitetty k\u00e4ytt\u00f6liittym\u00e4ss\u00e4, voit yksinkertaisesti tarkistaa, olemmeko j\u00e4rjestelm\u00e4nvalvojassa <code>[is_admin](https:\/\/developer.wordpress.org\/reference\/functions\/is_admin\/)()<\/code>. Alla on esimerkki siit\u00e4, kuinka voit m\u00e4\u00e4ritt\u00e4\u00e4 s\u00e4hk\u00f6posti-ilmoitukset, kun k\u00e4ytt\u00e4j\u00e4 p\u00e4ivitt\u00e4\u00e4 asetuksiaan k\u00e4ytt\u00f6liittym\u00e4ss\u00e4.<\/p>\n<pre><code>add_action('acf\/save_post', function($post_id) {\n    if (strpos($post_id, 'user_') === false) {\n        return $post_id;\n    }\n\u00a0\n    if (is_admin()) {\n        return;  \/\/ Bail if we are updating in admin\n    }\n\u00a0\n    $user_id = intval(substr($post_id, 5));\n\u00a0\n    \/\/ Use get_field() to get the saved\/submitted values if needed\n    \/\/ Then use wp_mail() to send an email\n});<\/code><\/pre>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>K\u00e4ytt\u00f6liittym\u00e4lomakkeen luominen Advanced Custom Fields (ACF) -kentill\u00e4. Kerron yksityiskohtaisesti, kuinka se toimii ja kuinka voit muokata sit\u00e4 tarpeidesi mukaan.<\/p>\n","protected":false},"author":1,"featured_media":224889,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[719,719,813,1110,834,843,813,834,843,864,864],"tags":[1166],"class_list":["post-233606","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-laajennuksia","category-n-a","category-opas-aloittelijoille","category-opetusohjelmia","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233606","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=233606"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233606\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/224889"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=233606"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=233606"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=233606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}