{"id":233971,"date":"2023-02-27T14:51:00","date_gmt":"2023-02-27T11:51:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233971"},"modified":"2022-11-11T13:29:57","modified_gmt":"2022-11-11T10:29:57","slug":"kuidas-luua-wordpressis-kohandatud-taepsema-otsingu-malli","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/kuidas-luua-wordpressis-kohandatud-taepsema-otsingu-malli\/","title":{"rendered":"Kuidas luua WordPressis kohandatud t\u00e4psema otsingu malli"},"content":{"rendered":"\n<p>See juhend on m\u00f5eldud teile, kellel on kohandatud postituse t\u00fc\u00fcp (CPT) ja soovite t\u00e4psema otsingu lehte, mis otsib selle CPT raames tulemusi. Otsinguvormis saate erinevate v\u00e4ljade piires otsimiseks seadistada erinevaid sisendeid; postituse pealkiri, postituse sisu, mis tahes t\u00fc\u00fcpi kohandatud meta v\u00f5i kohandatud taksonoomia.<\/p>\n<p>Selles postituses eeldame, et meil on raamatute jaoks kohandatud postituse t\u00fc\u00fcp, lisatud kohandatud taksonoomia raamatu\u017eanrile ja hulk kohandatud meta; autor, avaldamisaasta, ISBN-number ja m\u00e4rkeruut, kas raamat on laos v\u00f5i mitte. Kohandatud postituse t\u00fc\u00fcp ja parameetrid s\u00f5ltuvad t\u00e4ielikult teie vajadustest, allolev kood p\u00fc\u00fcab lihtsalt katta enamiku alustest.<\/p>\n<h2>Mida me teeme<\/h2>\n<p>Loome raamatute jaoks kohandatud postituse t\u00fc\u00fcbi ja \u017eanri jaoks sellele lisatud kohandatud hierarhilise taksonoomia. Lisaks on igal raamatul kohandatud v\u00e4ljad autori(te), avaldamisaasta, ISBN-numbri ja m\u00e4rkeruut selle kohta, kas lisada raamatuid, mis on otsas. Mis puutub otsingulehe endasse, siis teeme lehemalli, kus asub suurem osa meie koodist. Leht algab alguses kohandatud vormi renderdamisega; n\u00e4itab k\u00f5iki v\u00f5imalikke parameetreid tulemuste filtreerimiseks. Selle all kuvatakse loendis k\u00f5ik raamatute tulemused. Otsustame tulemuste arvu lehek\u00fclje kohta ja lisame lehek\u00fclgede alla, kui arv \u00fcletab seda.<\/p>\n<p>Need on v\u00f5imalikud filtriparameetrid, mille me oma t\u00e4psema otsingu malli jaoks loome:<\/p>\n<ul>\n<li>Tekstisisend mis tahes stringi otsimiseks postituse pealkirjas ja postituse sisus.<\/li>\n<li>Rippmen\u00fc\u00fc \u017eanri valimiseks. V\u00f5imaldab valida termini v\u00f5i j\u00e4tta selle valikule &quot;Igasugune&quot;.<\/li>\n<li>Sisend autori nime sisestamiseks, mis otsib kohandatud metast. L\u00f5dvalt sobitamine, mis t\u00e4hendab &quot;Mark&quot; sisestamist, tagastab k\u00f5ik autorid, kelle nimi on v\u00f5i sisaldab &quot;Mark&quot;.<\/li>\n<li>Numbrisisend raamatu avaldamisaasta sisestamiseks, mis otsib kohandatud metast. L\u00f5dvalt sobitamine, mis t\u00e4hendab, et n\u00e4iteks &#8220;20&quot; sisestamine sobib iga 1920. aastal v\u00f5i 20-ga algava aasta raamatuga.<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/International_Standard_Book_Number\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Sisend ISBN-i (rahvusvahelise raamatu ID<\/a>) sisestamiseks, mis otsib kohandatud meta. Tagastab ainult t\u00e4psed vasted.<\/li>\n<li>M\u00e4rkeruut, kas lisada laost otsa saanud raamatud, veel \u00fcks kohandatud meta. Vaikimisi on see m\u00e4rkimata, mis t\u00e4hendab, et tulemused n\u00e4itavad ainult laos olevaid raamatuid.<\/li>\n<\/ul>\n<p>Vorm on seadistatud kasutama GET-meetodit, mis t\u00e4hendab, et k\u00f5ik otsitavad parameetrid lisatakse URL-is olevale lehele kujul &quot; <code>?book-search=world&amp;year-published=2016&amp;book-author=mark<\/code>&quot;. Teine v\u00f5imalus, kui soovite v\u00e4ltida &quot;inetute URL-ide&quot; kasutamist, on Javascripti ja AJAX-i kasutamine. Kuid sellel on m\u00f5ned varjuk\u00fcljed. Esiteks ei saa konkreetsete otsinguparameetritega otsingut j\u00e4rjehoidjatesse lisada &quot;eelt\u00e4idetud&quot;. Kujutage ette, et soovite mujal oma saidil linkida otse konkreetse autori kohandatud otsingulehele. Seej\u00e4rel saate suunata lingi oma otsingulehele, lisada &quot; <code>?author=mark<\/code>&quot; ja lingil kl\u00f5psamine viib otse selle autori tulemusteni. Seda pole AJAXiga v\u00f5imalik saavutada.<\/p>\n<p>Otsinguparameetrid h\u00f5lmavad \u00fcksteist. See t\u00e4hendab, et n\u00e4iteks aasta &#8220;2011&#8221; ja autori &#8220;Some guy&#8221; kombineerimisel tagastatakse ainult need raamatud, mis vastavad M\u00d5LEMALE. Kui m\u00e4\u00e4rame \u00fcldotsingu tekstisisestuses ka s\u00f5na \u201enaljakas&#8221;, saame ainult vastused, mis vastavad k\u00f5igile kolmele. \u00d6eldud erinevate s\u00f5nadega; kasutame JA loogikat. See on k\u00f5ige levinum meetod otsingutulemuste filtreerimiseks.<\/p>\n<p>See \u00f5petus ei h\u00f5lma stiilimist, nii et see osa on teie otsustada. Allpool on n\u00e4ide sellest, kuidas see m\u00f5ne p\u00f5hilise stiiliga v\u00e4lja n\u00e4eb.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151388-61e4caf8ea62c.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-151388-61e4caf8ea62c.png\" alt=\"Kuidas luua WordPressis kohandatud t\u00e4psema otsingu malli\" ><\/a><\/p>\n<h2>M\u00e4rkus kohandatud p\u00e4ringuga lehitsemise kohta<\/h2>\n<p>Kui soovite kohandatud p\u00e4ringu lehek\u00fclgede j\u00e4rjekorda seada \u00fchel lehel, peate teadma m\u00f5nda asja. P\u00e4ringu lehek\u00fclgede arvu saab luua WordPressi funktsioonide <code>[the_posts_pagination](https:\/\/developer.wordpress.org\/reference\/functions\/the_posts_pagination\/)()<\/code>, <code>[paginate_links](https:\/\/developer.wordpress.org\/reference\/functions\/paginate_links\/)()<\/code>v\u00f5i kahe <code>[next_post_link](https:\/\/developer.wordpress.org\/reference\/functions\/next_post_link\/)()<\/code>ja <code>[previous_post_link](https:\/\/developer.wordpress.org\/reference\/functions\/previous_post_link\/)()<\/code>. Need on aga kodeeritud t\u00f6\u00f6tama globaalse <code>wp_query<\/code>objektiga (mis lehemalli puhul on leht ise), mitte kohandatud p\u00e4ringuga.<\/p>\n<p>On m\u00f5ned lahendused, n\u00e4iteks lehek\u00fclgede muutmise funktsiooni kirjutamine ise. V\u00f5i v\u00f5ite toimingut kasutada ja objektiga <code>pre_get_posts<\/code>manipuleerida. <code>wp_query<\/code>Kahjuks on see meetod lehek\u00fclgede funktsiooni m\u00f5jutamiseks liiga hilja. Teine v\u00f5imalus on j\u00e4tta lehek\u00fclgede vahelej\u00e4tmine t\u00e4ielikult vahele ja n\u00e4idata lihtsalt k\u00f5iki postitusi. See v\u00f5ib olla valik, kui teil pole palju postitusi, kuid kui loote t\u00e4psema kohandatud otsingu malli, siis eeldan, et teil on \u00fcsna v\u00e4he postitusi.<\/p>\n<p>See, mida me selles juhendis teeme, on omamoodi &quot;h\u00e4kkiv&quot; meetod. Lehemallis alistame <code>wp_query<\/code>objekti oma kohandatud p\u00e4ringuga, nii et ts\u00fckli- ja lehek\u00fclgede funktsioonid toimiksid ootusp\u00e4raselt. See meetod on minu jaoks k\u00f5ige edukam olnud.<\/p>\n<p>Ilma pikema jututa alustame kodeerimisega!<\/p>\n<h2>Kohandatud postituse t\u00fc\u00fcbi, taksonoomia ja metav\u00e4ljade seadistamine<\/h2>\n<p>Esimene samm on kohandatud postituse t\u00fc\u00fcbi m\u00e4\u00e4ratlemine, mille jaoks tahame t\u00e4psema otsingu malli luua. Kui olete juba kohandatud postituse t\u00fc\u00fcbi seadistanud v\u00f5i soovite seda postituste v\u00f5i lehtede jaoks rakendada, v\u00f5ite liikuda otse j\u00e4rgmise osa juurde.<\/p>\n<p>M\u00e4\u00e4ratleme kohandatud postituse t\u00fc\u00fcbi <code>book<\/code>koos hierarhilise kohandatud taksonoomiaga <code>book_category<\/code>. Ma ei hakka siin \u00fcksikasjalikult selgitama, kuidas kohandatud postitust\u00fc\u00fcpe ja taksonoomiaid luua. Kui soovite rohkem teada saada, on mul postitus, mis seda \u00fcksikasjalikult kirjeldab.<\/p>\n<p>Sisestage see kood \u00fcksk\u00f5ik kuhu oma teema <code>functions.php<\/code>v\u00f5i pistikprogrammi koodis:<\/p>\n<pre><code>add_action('init', function() {\n    register_post_type('book', [\n        'label' =&gt; __('Books', 'txtdomain'),\n        'public' =&gt; true,\n        'menu_position' =&gt; 5,\n        'menu_icon' =&gt; 'dashicons-book',\n        'supports' =&gt; ['title', 'editor', 'thumbnail', 'author', 'revisions', 'comments'],\n        'show_in_rest' =&gt; true,\n        'rewrite' =&gt; ['slug' =&gt; 'book'],\n        'taxonomies' =&gt; ['book_category'],\n        'labels' =&gt; [\n            'singular_name' =&gt; __('Book', 'txtdomain'),\n            'add_new_item' =&gt; __('Add new book', 'txtdomain'),\n            'new_item' =&gt; __('New book', 'txtdomain'),\n            'view_item' =&gt; __('View book', 'txtdomain'),\n            'not_found' =&gt; __('No books found', 'txtdomain'),\n            'not_found_in_trash' =&gt; __('No books found in trash', 'txtdomain'),\n            'all_items' =&gt; __('All books', 'txtdomain'),\n            'insert_into_item' =&gt; __('Insert into book', 'txtdomain')\n        ],\n    ]);\n\u00a0\n    register_taxonomy('book_category', ['book'], [\n        'label' =&gt; __('Book Category', 'txtdomain'),\n        'hierarchical' =&gt; true,\n        'rewrite' =&gt; ['slug' =&gt; 'book-category'],\n        'show_admin_column' =&gt; true,\n        'show_in_rest' =&gt; true,\n        'labels' =&gt; [\n            'singular_name' =&gt; __('Book Category', 'txtdomain'),\n            'all_items' =&gt; __('All Book Categories', 'txtdomain'),\n            'edit_item' =&gt; __('Edit Book Category', 'txtdomain'),\n            'view_item' =&gt; __('View Book Category', 'txtdomain'),\n            'update_item' =&gt; __('Update Book Category', 'txtdomain'),\n            'add_new_item' =&gt; __('Add New Book Category', 'txtdomain'),\n            'new_item_name' =&gt; __('New Book Category Name', 'txtdomain'),\n            'search_items' =&gt; __('Search Book Categories', 'txtdomain'),\n            'parent_item' =&gt; __('Parent Book Category', 'txtdomain'),\n            'parent_item_colon' =&gt; __('Parent Book Category:', 'txtdomain'),\n            'not_found' =&gt; __('No Book Categories found', 'txtdomain'),\n        ]\n    ]);\n});<\/code><\/pre>\n<p>Selle tulemuseks on kohandatud postituse t\u00fc\u00fcp, millele administraatoris on lisatud taksonoomia.<\/p>\n<p>Kohandatud postituse meta seadistamine on natuke teie enda otsustada \u2013 kas k\u00e4sitsege seda k\u00e4sitsi <code>[add_meta_box](https:\/\/developer.wordpress.org\/reference\/functions\/add_meta_box\/)()<\/code>v\u00f5i kasutage pluginat <a href=\"https:\/\/www.advancedcustomfields.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Advanced Custom Fields<\/a> (ACF), mis sobib selliseks t\u00f6\u00f6ks suurep\u00e4raselt. Kasutan ACF-i v\u00e4ljade programmiliseks seadistamiseks, n\u00e4iteks:<\/p>\n<pre><code>if (function_exists('acf_add_local_field_group')) {\n    add_action('acf\/init', function() {\n        $fields = [\n            [\n                'key' =&gt; 'field_author',\n                'label' =&gt; __('Author(s)', 'txtdomain'),\n                'name' =&gt; 'book_author',\n                'type' =&gt; 'textarea',\n                'rows' =&gt; 3,\n                'new_lines' =&gt; 'wpautop',\n            ],\n            [\n                'key' =&gt; 'field_year_published',\n                'label' =&gt; __('Year published', 'txtdomain'),\n                'name' =&gt; 'year_published',\n                'type' =&gt; 'number',\n            ],\n            [\n                'key' =&gt; 'field_isbn',\n                'label' =&gt; __('ISBN', 'txtdomain'),\n                'name' =&gt; 'isbn',\n                'type' =&gt; 'text',\n            ],\n            [\n                'key' =&gt; 'field_in_stock',\n                'label' =&gt; __('Stock status', 'txtdomain'),\n                'name' =&gt; 'in_stock',\n                'type' =&gt; 'true_false',\n                'message' =&gt; __('In stock', 'txtdomain'),\n                'default_value' =&gt; 1,\n            ],\n        ];\n\u00a0\n        acf_add_local_field_group([\n            'key' =&gt; 'group_book_fields',\n            'title' =&gt; __('Book Details', 'txtdomain'),\n            'fields' =&gt; $fields,\n            'label_placement' =&gt; 'top',\n            'menu_order' =&gt; 0,\n            'style' =&gt; 'default',\n            'position' =&gt; 'normal',\n            'location' =&gt; [\n                [\n                    [\n                        'param' =&gt; 'post_type',\n                        'operator' =&gt; '==',\n                        'value' =&gt; 'book'\n                    ]\n                ]\n            ],\n        ]);\n    });\n}<\/code><\/pre>\n<p>Loomulikult olete teretulnud seadistama ACF-i v\u00e4lju, kasutades ACF-i administraatori GUI-d. Kuid nende koodi j\u00e4rgi lisamisel on mitmeid eeliseid. N\u00e4iteks tagades, et s\u00e4ilitate samad v\u00e4ljad k\u00f5ikjal, kus oma teema v\u00f5i pistikprogrammi aktiveerite. Kui m\u00e4\u00e4rate v\u00e4ljad administraatoris, peate WordPressi saidi vahetamisel meeles pidama, et eksportida ja importida need v\u00e4ljad.<\/p>\n<p>Pange t\u00e4hele metanimesid; nt <code>book_author<\/code>, <code>year_published<\/code>ja nii edasi. Te viitate neile, kui loome t\u00e4psema otsingu mallile kohandatud p\u00e4ringu.<\/p>\n<p>ACF-i pistikprogrammi ja \u00fclaltoodud koodiga n\u00e4eks \u00fche raamatu redigeerimine v\u00e4lja j\u00e4rgmine:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151388-61e4cafa3c2c8.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-151388-61e4cafa3c2c8.png\" alt=\"Kuidas luua WordPressis kohandatud t\u00e4psema otsingu malli\" ><\/a><\/p>\n<p>Sellega on meil k\u00f5igil hea luua nii palju raamatupostitusi, kui tahame. J\u00e4rgmine samm on meie otsingu jaoks lehemalli loomine.<\/p>\n<h2>Lehe malli loomine<\/h2>\n<p>Loome lehemalli, kuhu lisame oma t\u00e4psema otsingu malli. Tehke oma teemast koopia <code>single.php<\/code>v\u00f5i <code>page.php<\/code>ja nimetage see \u00fcmber n\u00e4iteks <code>template-booksearch.php<\/code>. HTML on teie otsustada, kuid p\u00f5hjus, miks me \u00fcksikust v\u00f5i lehek\u00fcljest koopia teeme, on see, et need on paigutuse poolest t\u00f5en\u00e4oliselt k\u00f5ige l\u00e4hedasemad mallid.<\/p>\n<p>Lehemalli \u00fclaosas anname m\u00e4rku, et tegemist on lehemalliga, kirjutades kommentaariplokki &quot;Malli nimi&quot; ja selle nime. See tagab, et saame lehe muutmisel valida lehe malli.<\/p>\n<pre><code>&lt;?php \/* Template Name: Advanced Book Search *\/\nget_header(); ?&gt;\n...<\/code><\/pre>\n<p>Jaotised, mida peame oma mallis kodeerima, on j\u00e4rgmised, j\u00e4rgmises j\u00e4rjekorras:<\/p>\n<ol>\n<li>Salvestage k\u00f5ik vormi poolt varem esitatud muutujad, kasutades <code>get_query_var()<\/code>. Samuti tuleb salvestada praegune leht<\/li>\n<li>Otsingu tegemiseks renderdage otsinguvorm esitamisnupuga<\/li>\n<li>L\u00e4htestage <code>wp_query<\/code>objekt<\/li>\n<li>Seadistage uue argumendid <code>WP_Query()<\/code>s\u00f5ltuvalt otsitud parameetritest ja k\u00e4ivitage p\u00e4ring. <code>wp_query<\/code>M\u00e4\u00e4rake objektile kohandatud p\u00e4ring<\/li>\n<li>Sirvige tulemusi ja kuvage need. Samuti renderdage lehek\u00fclgede lingid<\/li>\n<li>L\u00e4htestage <code>wp_query<\/code>objekt sellele, mis see oli<\/li>\n<\/ol>\n<p>P\u00f5hjus, miks me peame k\u00f5ik otsitud muutujad ja praeguse lehe varakult salvestama, on see, et need muutujad l\u00e4hevad kaduma, kui l\u00e4htestame <code>wp_query<\/code>objekti sammus 3. Samuti vajame muutujaid otsinguvormi jaoks, et v\u00e4ljad t\u00e4ita.<\/p>\n<p>Otsustage oma mallis koht, kuhu soovite kohandatud otsingu v\u00e4ljastada, ja alustame \u00fclaosast.<\/p>\n<h3>1 Hangi k\u00f5ik otsitud muutujad<\/h3>\n<p>Me saame GET-i parameetrid (URL-ist) k\u00e4tte <code>[get_query_var](https:\/\/developer.wordpress.org\/reference\/functions\/get_query_var\/)()<\/code>. N\u00e4iteks; kui meil on <code>?book-author=benjamin<\/code>URL-is parameeter, <code>get_query_var('book-author')<\/code>tagastaks kasutamine stringi &quot; <code>benjamin<\/code>&quot;. K\u00f5ikide muutujate toomist saab teha j\u00e4rgmiselt:<\/p>\n<pre><code>$search_string = get_query_var('book-search');\n$author = get_query_var('book-author');\n$category = get_query_var('book-category');\n$year = get_query_var('year-published');\n$isbn = get_query_var('isbn');\n$out_of_stock = get_query_var('out-of-stock');<\/code><\/pre>\n<p>Kuid need on k\u00f5ik kohandatud parameetrid, mis ei kuulu WordPressi standardsete GET-parameetrite hulka. WordPress ignoreerib k\u00f5iki GET-i parameetreid, mida ta ei tea, nii et nende kutsumine tagastab alati t\u00fchja stringi. Peame \u00fctlema WordPressile, et ta lubaks k\u00f5ik need GET-parameetrid. Teeme seda filtreerides <code>query_vars<\/code>. <code>functions.php<\/code>Lisage oma sisse ka see:<\/p>\n<pre><code>add_filter('query_vars', function($vars) {\n    $vars[] = 'book-search';\n    $vars[] = 'book-author';\n    $vars[] = 'book-category';\n    $vars[] = 'year-published';\n    $vars[] = 'isbn';\n    $vars[] = 'out-of-stock';\n    return $vars;\n});<\/code><\/pre>\n<p>N\u00fc\u00fcd <code>get_query_var()<\/code>peaksid meie omad saama GET-i parameetrid hankida. Kui neid ei m\u00e4\u00e4rata, tagastab see t\u00fchja stringi.<\/p>\n<p><code>wp_query<\/code>Enne objekti segamist peame ka praeguse lehe t\u00f5mbama. Praegune leht on peidetud GET-parameeter nimega <code>paged<\/code>. Toome selle samamoodi nagu teised GET-i parameetrid, kuid kui see on t\u00fchi, seame selle vaikev\u00e4\u00e4rtuseks 1.<\/p>\n<pre><code>$paged = (get_query_var('paged'))? get_query_var('paged'): 1;<\/code><\/pre>\n<p>M\u00e4rkus. Nagu tavaline WordPressi parameeter, ei pea me filtrit <code>paged<\/code>lisama .<code>paged``query_vars<\/code><\/p>\n<h3>2 Renderdage otsinguvorm<\/h3>\n<p>Otsinguvorm on lihtsalt <code>&lt;form&gt;<\/code>vajalike sisestustega ja vormi esitamise nupuga. HTML on t\u00e4ielikult teie otsustada, allolevas n\u00e4ites lisan sisendid lihtsas loendis. Ma ei lisa sellesse \u00f5petusse \u00fchtegi stiili, see on teie otsustada. Saate valida otsinguvormi stiili nii, et see asuks tulemuste \u00fclaosas v\u00f5i k\u00fcljel \u2013 vertikaalselt allapoole koos otsingutulemustega.<\/p>\n<p>M\u00e4rkus. T\u00e4psema otsingu malli l\u00fchendamiseks ja moduleerimiseks v\u00f5ite otsinguvormi osa eraldada eraldi mallifailist ja lisada see <code>[get_template_part](https:\/\/developer.wordpress.org\/reference\/functions\/get_template_part\/)()<\/code>. Kuid selle \u00f5petuse lihtsuse huvides lisan k\u00f5ik \u00fche mallifaili enda sisse.<\/p>\n<p>Vorm ise peab olema meetodiga GET ja toiming peab osutama lehele, kus oleme. Selleks p\u00e4\u00e4seme ligi globaalsele <code>$post<\/code>objektile ja saame sealt p\u00fcsiva lingi. L\u00f5pus lisame esitamisnupu, mis vormi esitab.<\/p>\n<pre><code>global $post;\n?&gt;\n&lt;form method=\"GET\" action=\"&lt;?php echo get_permalink($post-&gt;ID); ?&gt;\"&gt;\n    &lt;ul class=\"book-search-form\"&gt;\n\u00a0\n    &lt;\/ul&gt;\n    &lt;input type=\"submit\" value=\"&lt;?php _e('Search', 'txtdomain'); ?&gt;\" \/&gt;\n&lt;\/form&gt;\n&lt;?php<\/code><\/pre>\n<p>J\u00e4rjestamata loendisse lisame iga v\u00f5imaliku otsinguparameetri jaoks sobiva sisendi. Kohandage HTML-i ja otsinguparameetreid vastavalt oma vajadustele:<\/p>\n<pre><code>global $post;\n?&gt;\n&lt;form method=\"GET\" action=\"&lt;?php echo get_permalink($post-&gt;ID); ?&gt;\"&gt;\n    &lt;ul class=\"book-search-form\"&gt;\n        &lt;li&gt;\n            &lt;label for=\"book-search\"&gt;&lt;?php _e('Search...', 'txtdomain'); ?&gt;&lt;\/label&gt;\n            &lt;input type=\"text\" id=\"book-search\" name=\"book-search\" value=\"&lt;?php echo $search_string; ?&gt;\" \/&gt;\n        &lt;\/li&gt;\n        &lt;li&gt;\n            &lt;label for=\"book-category\"&gt;&lt;?php _e('Genre', 'txtdomain'); ?&gt;&lt;\/label&gt;\n            &lt;?php \n            wp_dropdown_categories([\n                'taxonomy' =&gt; 'book_category',\n                'name' =&gt; 'book-category',\n                'id' =&gt; 'book-category',\n                'value_field' =&gt; 'slug',\n                'selected' =&gt; $category,\n                'show_option_none' =&gt; __('Any genre', 'txtdomain'),\n                'option_none_value' =&gt; '',\n                'hierarchical' =&gt; true,\n                'hide_if_empty' =&gt; false,\n            ]);\n            ?&gt;\n        &lt;\/li&gt;\n        &lt;li&gt;\n            &lt;label for=\"book-author\"&gt;&lt;?php _e('Author', 'txtdomain'); ?&gt;&lt;\/label&gt;\n            &lt;input type=\"text\" id=\"book-author\" name=\"book-author\" value=\"&lt;?php echo $author; ?&gt;\" \/&gt;\n        &lt;\/li&gt;\n        &lt;li&gt;\n            &lt;label for=\"year-published\"&gt;&lt;?php _e('Year published', 'txtdomain'); ?&gt;&lt;\/label&gt;\n            &lt;input type=\"number\" id=\"year-published\" name=\"year-published\" value=\"&lt;?php echo $year; ?&gt;\" \/&gt;\n        &lt;\/li&gt;\n        &lt;li&gt;\n            &lt;label for=\"isbn\"&gt;&lt;?php _e('ISBN', 'txtdomain'); ?&gt;&lt;\/label&gt;\n            &lt;input type=\"text\" id=\"isbn\" name=\"isbn\" value=\"&lt;?php echo $isbn; ?&gt;\" \/&gt;\n        &lt;\/li&gt;\n        &lt;li&gt;\n            &lt;input type=\"checkbox\" id=\"out-of-stock\" name=\"out-of-stock\" value=\"out-of-stock\" &lt;?php checked($out_of_stock, 'out-of-stock'); ?&gt; \/&gt;&lt;label for=\"out-of-stock\"&gt;&lt;?php _e('Include out of stock', 'txtdomain'); ?&gt;&lt;\/label&gt;\n        &lt;\/li&gt;\n    &lt;\/ul&gt;\n    &lt;input type=\"submit\" value=\"&lt;?php _e('Search', 'txtdomain'); ?&gt;\" \/&gt;\n&lt;\/form&gt;\n&lt;?php<\/code><\/pre>\n<p>Pange t\u00e4hele <code>name<\/code>atribuute; need kuvatakse vormi esitamisel URL-is. Need peavad vastama <code>query_vars<\/code>ja <code>get_query_var()<\/code>oleme varem m\u00e4\u00e4ratlenud!<\/p>\n<p>\u00dclaltoodud kood algab tekstisisestuse renderdamisest \u00fcldise tekstiotsingu jaoks. Seadsime <code>value<\/code>varem otsitud muutujale, mille hankisime kasutades <code>get_query_var()<\/code>. See tagab, et sisend ei t\u00fchjenda p\u00e4rast otsingu tegemist.<\/p>\n<p>J\u00e4rgmine parameeter on \u017eanri rippmen\u00fc\u00fc meie kohandatud taksonoomiast. Selle renderdamiseks kasutame funktsiooni <code>[wp_dropdown_categories](https:\/\/developer.wordpress.org\/reference\/functions\/wp_dropdown_categories\/)()<\/code>. Vaadake dokumentatsiooni lehte, et n\u00e4ha, miks me lisame k\u00f5ik need parameetrid, et kohandada rippmen\u00fc\u00fcd vastavalt oma vajadustele. On oluline, et atribuut oleks <code>taxonomy<\/code>seatud meie kohandatud taksonoomiale, <code>name<\/code>atribuut oleks \u00f5ige ja <code>selected<\/code>seatud eelnevalt otsitud muutuja v\u00e4\u00e4rtusele. Samuti m\u00e4\u00e4rasime terminiv\u00e4\u00e4rtusteks termini ID-de asemel nende n\u00e4lkjad. <code>?book-category=fiction<\/code>Selle asemel n\u00e4eb see parem v\u00e4lja <code>?book-category=42<\/code>. Samuti aktiveerime suvandi \u201ePuudub&#8221; valiku \u201eIga \u017eanr&#8221; lisamiseks.<\/p>\n<p>P\u00e4rast seda renderdame autori otsimiseks teise tekstisisestuse, avaldamisaasta numbrisisestuse, ISBN-numbri tekstisisestuse ja l\u00f5puks m\u00e4rkeruudu, mis on vaikimisi m\u00e4rkimata, et kaasata laost otsa saanud raamatud.<\/p>\n<h3>3 L\u00e4htestage wp_query<\/h3>\n<p>J\u00e4rgmine samm on v\u00e4ike h\u00e4kkimine, et tagada lehek\u00fclgede lugemine meie kohandatud p\u00e4ringu puhul. Salvestame lihtsalt voolu <code>$wp_query<\/code>mingisse muutujasse ja m\u00e4\u00e4rame selle v\u00e4\u00e4rtuseks <code>null<\/code>. Hiljem, sammus 6, l\u00e4htestame selle <code>$tmp_wpquery<\/code>muutujast.<\/p>\n<pre><code>$tmp_wpquery = $wp_query;\n$wp_query = null;<\/code><\/pre>\n<h3>4 Seadistage argumendid ja k\u00e4ivitage kohandatud p\u00e4ring<\/h3>\n<p>See osa on seotud uue p\u00e4ringu sooritamisega. Alustuseks seadistame k\u00f5ige elementaarsemad argumendid ja seej\u00e4rel lisame tingimuslikult parameetrid s\u00f5ltuvalt sellest, mida varem otsitud muutujatest (meie <code>get_query_var()<\/code>s-ist) leiti.<\/p>\n<pre><code>$args = [\n    'post_type' =&gt; 'book',\n    'posts_per_page' =&gt; 20,\n    'paged' =&gt; $paged\n];\n\u00a0\n$meta_query = [];\n$tax_query = [];\n\u00a0\nif (!empty($search_string)) {\n    $args['s'] = $search_string;\n}\n\u00a0\nif (!empty($category)) {\n    $tax_query[] = [\n        'taxonomy' =&gt; 'book_category',\n        'field' =&gt; 'slug',\n        'terms' =&gt; $category\n    ];\n}\n\u00a0\nif (!empty($author)) {\n    $meta_query[] = [\n        'key' =&gt; 'book_author',\n        'value' =&gt; $author,\n        'compare' =&gt; 'LIKE'\n    ];\n}\n\u00a0\nif (!empty($year)) {\n    $year = (int) $year;\n    $meta_query[] = [\n        'key' =&gt; 'year_published',\n        'value' =&gt; $year,\n        'compare' =&gt; 'LIKE'\n    ];\n}\n\u00a0\nif (!empty($isbn)) {\n    $meta_query[] = [\n        'key' =&gt; 'isbn',\n        'value' =&gt; $isbn,\n    ];\n}\n\u00a0\nif (empty($out_of_stock)) {\n    $meta_query[] = [\n        'key' =&gt; 'in_stock',\n        'value' =&gt; true,\n    ];\n}\n\u00a0\nif (!empty($meta_query)) {\n    $args['meta_query'] = $meta_query;\n}\nif (!empty($tax_query)) {\n    $args['tax_query'] = $tax_query;\n}\n\u00a0\n\/\/ Perform query and assign it to wp_query\n$books = new WP_Query($args);\n$wp_query = $books;<\/code><\/pre>\n<p>\u00dclaltoodud kood ehitab p\u00f5him\u00f5tteliselt <code>WP_Query<\/code>parameetritega a. Dokumentatsioonileht on suurep\u00e4rane ressurss p\u00e4ringu koostamise v\u00e4ljaselgitamiseks <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">.<\/a><code>WP_Query<\/code><\/p>\n<p><code>paged<\/code>Juba esimesed argumendid tagavad, et esitaksime p\u00e4ringuid ainult raamatute kohta ja et anname varem hangitud muutuja p\u00f5hjal \u00f5igesti teada, millisel lehel me praegu viibime. Postituste arv lehek\u00fcljel on teie otsustada, ma m\u00e4\u00e4rasin selle lihtsalt 20 peale.<\/p>\n<p>Pange t\u00e4hele, et kui lisate &quot; <code>compare<\/code>&quot; &quot; <code>LIKE<\/code>&quot;, paneb WordPress otsima k\u00f5ike, mis sisaldab antud stringi. Ma ei lisanud seda ISBN-i otsingusse, sest tahan, et see leiaks selle v\u00e4lja jaoks ideaalselt sobivad tulemused.<\/p>\n<p>Oluline on just l\u00f5pus, kui me p\u00e4ringu tegelikult sooritame ja m\u00e4\u00e4rame selle p\u00e4ringu <code>wp_query<\/code>muutujale.<\/p>\n<h3>5 Sirvige p\u00e4ringu tulemusi ja renderdage lehek\u00fclgede arvu<\/h3>\n<p>See samm on t\u00f5esti lihtne. K\u00f5ik, mida vajame, on standardne ts\u00fckkel ja iga jaoks renderdame raamatupostituse nii, nagu me soovime. See osa on t\u00e4ielikult teie otsustada.<\/p>\n<p>Allolev kood n\u00e4itab tulemuste l\u00e4bivaatamise p\u00f5hin\u00e4idet, helistades <code>get_template_part()<\/code>iga postituse jaoks. P\u00e4rast ts\u00fcklit <code>the_posts_pagination()<\/code>kasutatakse lehek\u00fcljelinkide renderdamiseks. Kui p\u00e4ring ei tagastanud \u00fchtegi postitust, kuvatakse lihtne tekstiga l\u00f5ik.<\/p>\n<pre><code>if (have_posts()) { \n    while (have_posts()): the_post();\n        get_template_part('content', 'book');\n    endwhile;\n\u00a0\n    the_posts_pagination([\n        'mid_size' =&gt; 2,\n        'prev_text' =&gt; __('\u00ab Previous', 'txdomain'),\n        'next_text' =&gt; __('Next \u00bb', 'txdomain')\n    ]);\n} else {\n    ?&gt;&lt;p class=\"no-posts\"&gt;&lt;?php _e('No books found.', 'txdomain'); ?&gt;&lt;\/p&gt;&lt;?php\n}<\/code><\/pre>\n<p>Kohandage HTML-i ja v\u00e4ljundit vastavalt oma vajadustele. \u00dclaltoodud kood eeldab teemas mallifaili, mille nimi <code>content-book.php<\/code>on \u00fche ts\u00fcklis oleva raamatu renderdamiseks. Ma ei n\u00e4ita teile, kuidas iga postitust renderdada, kuna see on asi, mille \u00fcle t\u00f5en\u00e4oliselt juba kontrollite.<\/p>\n<h3>6 L\u00e4htestage wp_query, mis see oli<\/h3>\n<p>Viimane samm on <code>wp_query<\/code>objekti l\u00e4htestamine sellele, mida me varem 3. sammus salvestasime. Seadsime selle <code>null<\/code>esmaseks, et tagada selle l\u00e4htestamine.<\/p>\n<pre><code>$wp_query = null;\n$wp_query = $tmp_wpquery;<\/code><\/pre>\n<h2>J\u00e4reldus ja l\u00f5pptulemus<\/h2>\n<p>Ja oligi k\u00f5ik! N\u00fc\u00fcd peaks teil olema t\u00e4ielikult toimiv t\u00e4iustatud kohandatud otsingu mall. Loodan, et sellest on teile abi olnud \u2013 kood on kirjutatud v\u00f5imalikult \u00fcldiseks, et teil oleks lihtne oma vajadustega kohaneda. V\u00f5ib-olla soovite erinevat t\u00fc\u00fcpi parameetreid v\u00f5i on teie kohandatud postituse t\u00fc\u00fcp filmide v\u00f5i millegi muu jaoks!<\/p>\n<p>M\u00f5ne p\u00f5hilise stiiliga v\u00f5ib see h\u00f5lpsasti v\u00e4lja n\u00e4ha umbes selline:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151388-61e4caf8ea62c.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-151388-61e4caf8ea62c.png\" alt=\"Kuidas luua WordPressis kohandatud t\u00e4psema otsingu malli\" ><\/a><\/p>\n<p>Siin on l\u00f5plik kood; osa <code>functions.php<\/code>ja mall:<\/p>\n<pre><code>\/\/ Custom post type for books and custom taxonomy\nadd_action('init', function() {\n    register_post_type('book', [\n        'label' =&gt; __('Books', 'txtdomain'),\n        'public' =&gt; true,\n        'menu_position' =&gt; 5,\n        'menu_icon' =&gt; 'dashicons-book',\n        'supports' =&gt; ['title', 'editor', 'thumbnail', 'author', 'revisions', 'comments'],\n        'show_in_rest' =&gt; true,\n        'rewrite' =&gt; ['slug' =&gt; 'book'],\n        'taxonomies' =&gt; ['book_category'],\n        'labels' =&gt; [\n            'singular_name' =&gt; __('Book', 'txtdomain'),\n            'add_new_item' =&gt; __('Add new book', 'txtdomain'),\n            'new_item' =&gt; __('New book', 'txtdomain'),\n            'view_item' =&gt; __('View book', 'txtdomain'),\n            'not_found' =&gt; __('No books found', 'txtdomain'),\n            'not_found_in_trash' =&gt; __('No books found in trash', 'txtdomain'),\n            'all_items' =&gt; __('All books', 'txtdomain'),\n            'insert_into_item' =&gt; __('Insert into book', 'txtdomain')\n        ],\n    ]);\n\u00a0\n    register_taxonomy('book_category', ['book'], [\n        'label' =&gt; __('Book Category', 'txtdomain'),\n        'hierarchical' =&gt; true,\n        'rewrite' =&gt; ['slug' =&gt; 'book-category'],\n        'show_admin_column' =&gt; true,\n        'show_in_rest' =&gt; true,\n        'labels' =&gt; [\n            'singular_name' =&gt; __('Book Category', 'txtdomain'),\n            'all_items' =&gt; __('All Book Categories', 'txtdomain'),\n            'edit_item' =&gt; __('Edit Book Category', 'txtdomain'),\n            'view_item' =&gt; __('View Book Category', 'txtdomain'),\n            'update_item' =&gt; __('Update Book Category', 'txtdomain'),\n            'add_new_item' =&gt; __('Add New Book Category', 'txtdomain'),\n            'new_item_name' =&gt; __('New Book Category Name', 'txtdomain'),\n            'search_items' =&gt; __('Search Book Categories', 'txtdomain'),\n            'parent_item' =&gt; __('Parent Book Category', 'txtdomain'),\n            'parent_item_colon' =&gt; __('Parent Book Category:', 'txtdomain'),\n            'not_found' =&gt; __('No Book Categories found', 'txtdomain'),\n        ]\n    ]);\n});\n\u00a0\n\/\/ ACF for custom meta fields\nif (function_exists('acf_add_local_field_group')) {\n    add_action('acf\/init', function() {\n        $fields = [\n            [\n                'key' =&gt; 'field_author',\n                'label' =&gt; __('Author(s)', 'txtdomain'),\n                'name' =&gt; 'book_author',\n                'type' =&gt; 'textarea',\n                'rows' =&gt; 3,\n                'new_lines' =&gt; 'wpautop',\n            ],\n            [\n                'key' =&gt; 'field_year_published',\n                'label' =&gt; __('Year published', 'txtdomain'),\n                'name' =&gt; 'year_published',\n                'type' =&gt; 'number',\n            ],\n            [\n                'key' =&gt; 'field_isbn',\n                'label' =&gt; __('ISBN', 'txtdomain'),\n                'name' =&gt; 'isbn',\n                'type' =&gt; 'text',\n            ],\n            [\n                'key' =&gt; 'field_in_stock',\n                'label' =&gt; __('Stock status', 'txtdomain'),\n                'name' =&gt; 'in_stock',\n                'type' =&gt; 'true_false',\n                'message' =&gt; __('In stock', 'txtdomain'),\n                'default_value' =&gt; 1,\n            ],\n        ];\n\u00a0\n        acf_add_local_field_group([\n            'key' =&gt; 'group_book_fields',\n            'title' =&gt; __('Book Details', 'txtdomain'),\n            'fields' =&gt; $fields,\n            'label_placement' =&gt; 'top',\n            'menu_order' =&gt; 0,\n            'style' =&gt; 'default',\n            'position' =&gt; 'normal',\n            'location' =&gt; [\n                [\n                    [\n                        'param' =&gt; 'post_type',\n                        'operator' =&gt; '==',\n                        'value' =&gt; 'book'\n                    ]\n                ]\n            ],\n        ]);\n    });\n}\n\u00a0\n\/\/ Allow custom GET parameters\nadd_filter('query_vars', function($vars) {\n    $vars[] = 'book-search';\n    $vars[] = 'book-author';\n    $vars[] = 'book-category';\n    $vars[] = 'year-published';\n    $vars[] = 'isbn';\n    $vars[] = 'out-of-stock';\n    return $vars;\n});<\/code><\/pre>\n<pre><code>&lt;?php \n\/* Template Name: Advanced Book Search *\/\nget_header(); ?&gt;\n\u00a0\n&lt;main class=\"content\"&gt;\n    &lt;?php \n\u00a0\n    \/\/ Store variables\n    $paged = (get_query_var('paged'))? get_query_var('paged'): 1;\n    $search_string = get_query_var('book-search');\n    $author = get_query_var('book-author');\n    $category = get_query_var('book-category');\n    $year = get_query_var('year-published');\n    $isbn = get_query_var('isbn');\n    $out_of_stock = get_query_var('out-of-stock');\n\u00a0\n    \/\/ Search form\n    global $post;\n    ?&gt;&lt;form method=\"GET\" action=\"&lt;?php echo get_permalink($post-&gt;ID); ?&gt;\"&gt;\n        &lt;ul class=\"book-search-form\"&gt;\n            &lt;li&gt;\n                &lt;label for=\"book-search\"&gt;&lt;?php _e('Search...', 'txtdomain'); ?&gt;&lt;\/label&gt;\n                &lt;input type=\"text\" id=\"book-search\" name=\"book-search\" value=\"&lt;?php echo $search_string; ?&gt;\" \/&gt;\n            &lt;\/li&gt;\n            &lt;li&gt;\n                &lt;label for=\"book-category\"&gt;&lt;?php _e('Genre', 'txtdomain'); ?&gt;&lt;\/label&gt;\n                &lt;?php \n                wp_dropdown_categories([\n                    'taxonomy' =&gt; 'book_category',\n                    'name' =&gt; 'book-category',\n                    'id' =&gt; 'book-category',\n                    'value_field' =&gt; 'slug',\n                    'selected' =&gt; $category,\n                    'show_option_none' =&gt; __('Any genre', 'txtdomain'),\n                    'option_none_value' =&gt; '',\n                    'hierarchical' =&gt; true,\n                    'hide_if_empty' =&gt; false,\n                ]);\n                ?&gt;\n            &lt;\/li&gt;\n            &lt;li&gt;\n                &lt;label for=\"book-author\"&gt;&lt;?php _e('Author', 'txtdomain'); ?&gt;&lt;\/label&gt;\n                &lt;input type=\"text\" id=\"book-author\" name=\"book-author\" value=\"&lt;?php echo $author; ?&gt;\" \/&gt;\n            &lt;\/li&gt;\n            &lt;li&gt;\n                &lt;label for=\"year-published\"&gt;&lt;?php _e('Year published', 'txtdomain'); ?&gt;&lt;\/label&gt;\n                &lt;input type=\"number\" id=\"year-published\" name=\"year-published\" value=\"&lt;?php echo $year; ?&gt;\" \/&gt;\n            &lt;\/li&gt;\n            &lt;li&gt;\n                &lt;label for=\"isbn\"&gt;&lt;?php _e('ISBN', 'txtdomain'); ?&gt;&lt;\/label&gt;\n                &lt;input type=\"text\" id=\"isbn\" name=\"isbn\" value=\"&lt;?php echo $isbn; ?&gt;\" \/&gt;\n            &lt;\/li&gt;\n            &lt;li&gt;\n                &lt;input type=\"checkbox\" id=\"out-of-stock\" name=\"out-of-stock\" value=\"out-of-stock\" &lt;?php checked($out_of_stock, 'out-of-stock'); ?&gt; \/&gt;&lt;label for=\"out-of-stock\"&gt;&lt;?php _e('Include out of stock', 'txtdomain'); ?&gt;&lt;\/label&gt;\n            &lt;\/li&gt;\n        &lt;\/ul&gt;\n        &lt;input type=\"submit\" value=\"&lt;?php _e('Search', 'txtdomain'); ?&gt;\" \/&gt;\n    &lt;\/form&gt;\n    &lt;?php\n\u00a0\n    \/\/ Reset wp_query temporary\n    $tmp_wpquery = $wp_query;\n    $wp_query = null;\n\u00a0\n    \/\/ Start setting up custom query\n    $args = [\n        'post_type' =&gt; 'book',\n        'posts_per_page' =&gt; 20,\n        'paged' =&gt; $paged\n    ];\n\u00a0\n    $meta_query = [];\n    $tax_query = [];\n\u00a0\n    \/\/ Search post title and content\n    if (!empty($search_string)) {\n        $args['s'] = $search_string;\n    }\n\u00a0\n    \/\/ Search by category\n    if (!empty($category)) {\n        $tax_query[] = [\n            'taxonomy' =&gt; 'book_category',\n            'field' =&gt; 'slug',\n            'terms' =&gt; $category\n        ];\n    }\n\u00a0\n    \/\/ Search by ISBN\n    if (!empty($author)) {\n        $meta_query[] = [\n            'key' =&gt; 'book_author',\n            'value' =&gt; $author,\n            'compare' =&gt; 'LIKE'\n        ];\n    }\n\u00a0\n    \/\/ Search by year\n    if (!empty($year)) {\n        $year = (int) $year;\n        $meta_query[] = [\n            'key' =&gt; 'year_published',\n            'value' =&gt; $year,\n            'compare' =&gt; 'LIKE'\n        ];\n    }\n\u00a0\n    \/\/ Search by ISBN\n    if (!empty($isbn)) {\n        $meta_query[] = [\n            'key' =&gt; 'isbn',\n            'value' =&gt; $isbn,\n        ];\n    }\n\u00a0\n    \/\/ Filter out of stock\n    if (empty($out_of_stock)) {\n        $meta_query[] = [\n            'key' =&gt; 'in_stock',\n            'value' =&gt; true,\n        ];\n    }\n\u00a0\n    \/\/ Add to query arguments\n    if (!empty($meta_query)) {\n        $args['meta_query'] = $meta_query;\n    }\n    if (!empty($tax_query)) {\n        $args['tax_query'] = $tax_query;\n    }\n\u00a0\n    \/\/ Perform query and assign it to wp_query\n    $books = new WP_Query($args);\n    $wp_query = $books;\n\u00a0\n    \/\/ Loop through results\n    if (have_posts()) { \n        while (have_posts()): the_post();\n            get_template_part('content', 'book');\n        endwhile;\n\u00a0\n        the_posts_pagination([\n            'mid_size' =&gt; 2,\n            'prev_text' =&gt; __('\u00ab Previous', 'txdomain'),\n            'next_text' =&gt; __('Next \u00bb', 'txdomain')\n        ]);\n    } else {\n        ?&gt;&lt;p class=\"no-posts\"&gt;&lt;?php _e('No books found.', 'txdomain'); ?&gt;&lt;\/p&gt;&lt;?php\n    }\n\u00a0\n    \/\/ Reset wp_query back to what it was\n    $wp_query = null;\n    $wp_query = $tmp_wpquery;\n    ?&gt;\n&lt;\/main&gt;\n&lt;?php get_footer(); ?&gt;<\/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>See \u00f5petus on m\u00f5eldud teile, kellel on kohandatud postituse t\u00fc\u00fcp ja soovite luua kohandatud t\u00e4psema otsingu lehe kohandatud otsinguv\u00e4ljade ja parameetritega.<\/p>\n","protected":false},"author":1,"featured_media":151389,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,894,718,833,894,916,916,1110,842,833,842,863,863],"tags":[1165],"class_list":["post-233971","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-kood","category-juhend-algajatele","category-muud","category-n-a","category-opetused","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233971","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=233971"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233971\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/151389"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=233971"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=233971"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=233971"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}