{"id":230388,"date":"2022-12-08T17:57:00","date_gmt":"2022-12-08T14:57:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230388"},"modified":"2022-12-07T11:57:24","modified_gmt":"2022-12-07T08:57:24","slug":"kohandatud-wordpressi-kategooria-muutmise-leht","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/kohandatud-wordpressi-kategooria-muutmise-leht\/","title":{"rendered":"Kohandatud WordPressi kategooria muutmise leht"},"content":{"rendered":"\n<p>T\u00e4iendavate metakastide, v\u00e4ljade ja muu teabe lisamine WordPressi on lihtne, kui teate \u00f5igeid konkse ja \u00f5igeid API-sid, mida j\u00e4rgida. Aga mis siis, kui soovite WordPressi taksonoomia lehele teavet lisada?<\/p>\n<p>Oletame n\u00e4iteks, et soovite luua kohandatud WordPressi kategooria redigeerimislehe v\u00f5i lisada taksonoomia lehele kohandatud teavet?<\/p>\n<p>Seda on endiselt v\u00f5imalik teha ja see on endiselt suhteliselt lihtne, kuid j\u00e4llegi peate teadma \u00f5igeid konkse, mida kasutada, ja see s\u00f5ltub ka sellest, kas t\u00f6\u00f6tate sisseehitatud taksonoomiaga v\u00f5i kohandatud taksonoomiaga.<\/p>\n<p>Selle postituse jaoks n\u00e4itan, kuidas seda teha kohandatud, hierarhilise taksonoomia (v\u00f5i lihtsamalt \u00f6eldes kohandatud kategooria) abil.<\/p>\n<h2>Kohandatud WordPressi kategooria muutmise leht<\/h2>\n<p>Esiteks, kui otsustate t\u00f6\u00f6tada standardse kategooria lehega, n\u00e4ete t\u00f5en\u00e4oliselt midagi sellist:<\/p>\n<p>Ja kaks konksu, millega peate t\u00f6\u00f6tama, on j\u00e4rgmised:<\/p>\n<ul>\n<li><strong><a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Action_Reference\/edit_category_form\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">edit_category_form<\/a><\/strong><\/li>\n<li><strong><a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Action_Reference\/category_edit_form\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kategooria_redigeeri_vorm<\/a><\/strong><\/li>\n<\/ul>\n<p>Kui olete kl\u00f5psanud kummalgi lingil, m\u00e4rkate, et viimasel pole teavet, kuid esimesel on j\u00e4rgmine tekst:<\/p>\n<blockquote>\n<p>Muuda_kategooria_vormi toimingut\/konksu saab kasutada kategooria muutmise ekraanil lisatoimingute tegemiseks. N\u00e4iteks saate konkreetse kategooria kohta lisateabe salvestamiseks lisada vormiv\u00e4lju.<\/p>\n<\/blockquote>\n<p>Sel eesm\u00e4rgil valin \u00fcldiselt selle konksu kasutamise, kuna see on Codexis t\u00e4pselt m\u00e4\u00e4ratletud. Selles postituses tegelen siiski ainult teabe renderdamisega, mitte t\u00e4iendavate v\u00e4ljade lisamisega, mida tuleb salvestada.<\/p>\n<h3>Juhtmed Asjad \u00fcles<\/h3>\n<p>Lihtsamal kujul on parim viis seda t\u00fc\u00fcpi lehtedele kohandatud teabe lisamiseks luua funktsioon ja kinnitada see \u00fclaltoodud konksu k\u00fclge. K\u00f5ige lihtsamal kujul n\u00e4eb see v\u00e4lja umbes <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/c8eb7e636f9cd42f80908a94af7946a6#file-00-acme-display-object-ids-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">selline:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\nadd_action('edit_category_form', 'acme_display_object_ids');\n\/**\n * Displays an ordered list of all of the object IDs for a given\n * taxonomy.\n *\/\nfunction acme_display_object_ids()\n{\n  \/\/ Code for displaying the Object IDs goes here.\n}<\/code><\/pre>\n<p>Kui aga valite objektorienteeritud marsruudi, v\u00f5ite valida klassi, mis aktsepteerib konstruktori argumendina konksu ja kuulab selle s\u00fcndmuse k\u00e4ivitamist. Kui see nii on, v\u00f5ib teie kood v\u00e4lja n\u00e4ha <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/c8eb7e636f9cd42f80908a94af7946a6#file-01-object-id-subscriber-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">j\u00e4rgmine:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\nclass ObjectIdSubscriber\n{\n    \/**\n     * @var string the hook to which this class subscribes\n     *\/\n    private $hook;\n\n    \/**\n     * @param string $hook the hook to which this class is registered with WordPress\n     *\/\n    public function __construct(string $hook)\n    {\n      $this-&gt;hook = $hook;\n    }\n\n    \/**\n     * Renders all of the information for the object IDs.\n     *\/\n    public function load()\n    {\n        \/\/ Code for displaying the Object IDs goes here.\n    }\n}<\/code><\/pre>\n<p>Sellest olenemata on m\u00f5te selles, et teil peab olema klass v\u00f5i funktsioon, mis on \u00fchendatud konksuga, mis kuvab ekraanil teavet.<\/p>\n<h3>Teabe kuvamine<\/h3>\n<p>Siit edasi on teil vaja midagi renderdada. Olen oma loogika eraldi hoidmise f\u00e4nn, seega loon tavaliselt kataloogi <strong>Vaade<\/strong> ja seej\u00e4rel paigutan vaadete osafailid sellesse kataloogi.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162303-61e73af3dd69a.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-162303-61e73af3dd69a.png\" alt=\"Kohandatud WordPressi kategooria muutmise leht\" ><\/a><\/p>\n<p>Muidugi saate alati luua HTML-i stringi PHP funktsioonis (kuid desinfitseerige kindlasti v\u00e4ljund, kasutades n\u00e4iteks <strong><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_kses\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_kses<\/a><\/strong> ).<\/p>\n<p>Selle n\u00e4ite puhul hoian asja lihtsana: tahan lihtsalt andmebaasist t\u00f5mmata nimekirja k\u00f5igist postitustest (v\u00f5i objektidest, nagu n\u00e4ete kohe) ja loetleda lehel oleva teabe. Selleks vajan paari andmebaasip\u00e4ringut ja siis saan tulemuste loendit korrata.<\/p>\n<p>Esiteks vajan p\u00e4ringut, mis hangib antud kategooriast <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/c8eb7e636f9cd42f80908a94af7946a6#file-02-term-taxonomy-id-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">termin_taksonoomia_id :<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\n\/\/ This will retrieve all of the term relationships from where we can get post IDs.\nglobal $wpdb;\n$termTaxonomyId = $wpdb-&gt;get_results(\n    $wpdb-&gt;prepare(\n        \"\n        SELECT DISTINCT term_taxonomy_id\n        FROM $wpdb-&gt;term_taxonomy\n        WHERE term_id = %s\n        \",\n        $tagId\n    ),\n    ARRAY_A\n);\n$termTaxonomyId = isset($termTaxonomyId[0])? $termTaxonomyId[0]: null;\nif (null === $termTaxonomyId) {\n    return null;\n}<\/code><\/pre>\n<p>Seej\u00e4rel pean hankima loendi k\u00f5igist <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/c8eb7e636f9cd42f80908a94af7946a6#file-03-object-ids-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">objekti ID<\/a><\/strong> -dest, mis on seotud <strong>terminiga_taksonoomia_id<\/strong> :<\/p>\n<pre><code>&lt;?php\n\n\/\/ This will retrieve all of the post IDs.\n$postIds = $wpdb-&gt;get_results(\n    $wpdb-&gt;prepare(\n        \"\n        SELECT object_id\n        FROM $wpdb-&gt;term_relationships\n        WHERE term_taxonomy_id = %s\n        \",\n        $termTaxonomyId\n    ),\n    ARRAY_A\n);\nif (empty($postIds)) {\n    return null;\n}<\/code><\/pre>\n<p>Siit edasi saan <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/c8eb7e636f9cd42f80908a94af7946a6#file-04-render-data-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">teabe renderdamiseks<\/a><\/strong> kasutada algset funktsiooni (v\u00f5i klassi), mille ma varem l\u00f5in :<\/p>\n<pre><code>&lt;ul&gt;\n&lt;?php foreach ($postIds as $postId): ?&gt;\n  &lt;li&gt;&lt;?php echo $postId; ?&gt;&lt;\/li&gt;\n&lt;?php endforeach; ?&gt;\n&lt;\/ul&gt;<\/code><\/pre>\n<p>Kuid sealt saate teha palju muid asju.<\/p>\n<h2>Seal on rohkem<\/h2>\n<p>Nagu m\u00e4rgitud, tagastab see objektide ID-d, mis on sisuliselt postituse ID-d (v\u00f5i lehe ID-d v\u00f5i kohandatud postituse t\u00fc\u00fcbi ID-d v\u00f5i mis iganes tabelist <strong>wp_posts<\/strong> ).<\/p>\n<p>Kui teil on see teave olemas, saate hankida mis tahes teavet, n\u00e4iteks pealkirja, sisu, metaandmeid, erinevat kuup\u00e4evateavet ja nii edasi.<\/p>\n<p>Postituse m\u00f5te pole aga n\u00e4idata, millist teavet hankida, vaid kuidas hankida teavet antud taksonoomia kohta ja seej\u00e4rel renderdada see kohandatud WordPressi kategooria lehel. Ja see on lihtne viis t\u00e4pselt seda teha.<\/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>Postituse m\u00f5te pole aga n\u00e4idata, millist teavet hankida, vaid kuidas hankida teavet antud taksonoomia kohta ja seej\u00e4rel renderdada see kohandatud WordPressi kategooria lehel.<\/p>\n","protected":false},"author":1,"featured_media":235442,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,894,802,863],"tags":[1165],"class_list":["post-230388","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-kood","category-php-4","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230388","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=230388"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230388\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/235442"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=230388"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=230388"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=230388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}