{"id":228583,"date":"2022-10-23T11:29:00","date_gmt":"2022-10-23T08:29:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228583"},"modified":"2022-11-09T03:07:04","modified_gmt":"2022-11-09T00:07:04","slug":"wordpressi-konksu-kasutamine-vaerskendamisvalikute-jaoks","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/wordpressi-konksu-kasutamine-vaerskendamisvalikute-jaoks\/","title":{"rendered":"WordPressi konksu kasutamine v\u00e4rskendamisvalikute jaoks"},"content":{"rendered":"\n<p>WordPressi administraatoris olevate valikute v\u00e4rskendamine on lihtne, eks? Peate t\u00e4itma tekstiv\u00e4lja, m\u00e4rkima ruudu v\u00f5i vahetama raadionupu ja seej\u00e4rel kl\u00f5psama nuppu Salvesta.<\/p>\n<p>Kuid oletame, et peate seadistama konksu, mis k\u00e4ivitab, mis v\u00e4rskendab ka sekundaarset seotud valikut, kui see on sisse l\u00fclitatud.<\/p>\n<p>N\u00e4iteks kui m\u00e4rkeruut t\u00e4histab suvandit, siis oletame, et soovite andmebaasis m\u00e4\u00e4rata suvandi, kui m\u00e4rkeruut on m\u00e4rkimata, ja seej\u00e4rel kustutada selle alati, kui see valik on m\u00e4\u00e4ratud.<\/p>\n<p><a href=\"https:\/\/developer.wordpress.org\/reference\/hooks\/update_option\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Selle tegemiseks on<\/a> spetsiaalselt toiming, mis muudab selle \u00fcsna lihtsaks.<\/p>\n<h2>Konks v\u00e4rskendamisvalikute jaoks<\/h2>\n<p>Enne mis tahes koodiga tutvumist, kuidas seda teha, \u00f6elge, et antud update_option on rakendunud. Kui see on tehtud, peate seadistama tagasihelistamise, mis k\u00e4ivitub alati, kui suvand on m\u00e4\u00e4ratud.<\/p>\n<p>Lisaks on j\u00e4rgmised kaalutlused:<\/p>\n<ol>\n<li>Kas k\u00f5nealune valik oli sisse l\u00fclitatud?<\/li>\n<li>Kui jah, siis kas valik on seatud (eeldades, et see oli m\u00e4rkeruut)?<\/li>\n<li>Kui ei, siis kas teil on plaan, kuidas seda juhtumit k\u00e4sitleda?<\/li>\n<\/ol>\n<p>Eeldades, et k\u00f5ik \u00fclaltoodu on v\u00e4lja m\u00f5eldud, vajate funktsiooni toimingu m\u00e4\u00e4ratlemiseks ja funktsiooni, mis rakendab tagasihelistamist. Minu n\u00e4ites kasutan objektorienteeritud programmeerimist, kuid sama h\u00e4sti saab seda teha ka protseduurilises programmeerimises.<\/p>\n<p>Minu n\u00e4ites kasutan objektorienteeritud programmeerimist, kuid sama h\u00e4sti saab seda teha ka protseduurilises programmeerimises.<\/p>\n<h3>N\u00e4ide<\/h3>\n<p>Oletame, et teil on valik nimega user_is_disguised ja teil on andmebaasis veel \u00fcks v\u00e4\u00e4rtus nimega user_is_superman.<\/p>\n<p>Kui kasutaja_is_disguised v\u00e4\u00e4rtuseks on seatud veel, tuleb kasutaja_is_superman v\u00e4\u00e4rtuseks m\u00e4\u00e4rata false. Ja kui kasutaja_is_varjatud v\u00e4\u00e4rtuseks on seatud false, tuleks kasutaja_is_superman v\u00e4\u00e4rtuseks m\u00e4\u00e4rata t\u00f5ene.<\/p>\n<p>L\u00f5ppkokkuv\u00f5ttes muutuvad v\u00e4\u00e4rtused. Siin on n\u00e4ide, kuidas seda teha. Esiteks <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1c3af0efb30c5ac8203ec225be6aa8c9#file-00-init-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">peame konksu seadistama<\/a> :<\/p>\n<pre><code>&lt;?php\n\n\/**\n * Initializes the defined actions.\n *\/\npublic function init() {\n\n  add_action(\n    'update_option',\n    array( $this, 'toggle_other_option' ),\n    10, 3\n  );\n}\n<\/code><\/pre>\n<p>Seej\u00e4rel peame <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1c3af0efb30c5ac8203ec225be6aa8c9#file-01-toggle_other_option-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">rakendama<\/a> v\u00e4\u00e4rtuste vahetamise funktsiooni:<\/p>\n<pre><code>&lt;?php\n\n\/**\n * If the given option_name is `user_is_disguised`, then toggles another option\n * in the database - `user_is_superman` - based on the specified values.\n *\n * @param string $option_name The name of the value being updated.\n * @param mixed  $old_value   The previous value of the option before updating it.\n * @param mixed  $new_value   The value of the option now that it's been updated.\n *\/\npublic function toggle_other_option( $option_name, $old_value, $new_value) {\n\n  \/\/ If 'user_is_disguised' is not being changed, then don't worry about it.\n  if (0 !== strcasecmp( $option_name, 'user_is_disguised')) {\n   return; \n  }\n\n  \/* If 'user_is_disguised' is being set, then remove the Superman value; otherwise,\n   * set it to true (but don't worry about autoloading it).\n   *\/\n  if ('1' === $new_value) {\n    delete_option( 'user_is_superman' );\n  } else {\n    update_option( 'user_is_superman', true, false );\n  }\n}\n<\/code><\/pre>\n<p>Ja see peaks selle eest hoolitsema.<\/p>\n<h2>M\u00e4rkus argumentide kohta<\/h2>\n<p>Pange t\u00e4hele, et tagasihelistamine aktsepteerib kolme argumenti (mis on samuti m\u00e4\u00e4ratletud \u00fclaltoodud dokumentatsioonis). Need on kasulikud muudes, v\u00e4hem v\u00e4ljam\u00f5eldud rakendustes.<\/p>\n<p>Kuid v\u00f5ib-olla \u00fcks olulisemaid asju, mida \u00fclaltoodud koodist eemaldada, on see, et kontrollite enne v\u00e4\u00e4rtuste \u00fcmberl\u00fclitamist tagasihelistamisel valiku nime.<\/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>WordPressi administraatoris olevate valikute v\u00e4rskendamine on lihtne, kuid mis siis, kui soovite v\u00e4rskendada teist seotud valikut alati, kui m\u00f5ni teine \u200b\u200b\u200b\u200bl\u00fclitatakse.<\/p>\n","protected":false},"author":1,"featured_media":168014,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,749,894,916,863],"tags":[1165],"class_list":["post-228583","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-avatud-laehtekoodiga","category-kood","category-muud","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/228583","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=228583"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/228583\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/168014"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=228583"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=228583"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=228583"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}