{"id":231311,"date":"2023-01-01T17:06:00","date_gmt":"2023-01-01T14:06:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231311"},"modified":"2022-12-25T21:57:29","modified_gmt":"2022-12-25T18:57:29","slug":"otsige-postituste-metaandmeid-wordpressi-administraatorialas","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/otsige-postituste-metaandmeid-wordpressi-administraatorialas\/","title":{"rendered":"Otsige postituste metaandmeid WordPressi administraatorialas"},"content":{"rendered":"\n<p>Kui olete WordPressiga pikemat aega t\u00f6\u00f6tanud, on t\u00f5en\u00e4oline, et olete mingil m\u00e4\u00e4ral t\u00f6\u00f6tanud ka postituste metaandmetega. V\u00f5ib-olla olete lihtsalt andmebaasist metaandmeid lugenud v\u00f5i olete nii andmebaasi tabelisse kirjutanud kui ka sealt lugenud.<\/p>\n<p>See v\u00f5ib olla t\u00f5eliselt v\u00f5imas API, kui peate oma postitustega (v\u00f5i kui soovite asju veelgi rohkem abstraktselt v\u00f5tta, siis oma mudelitega) seostama teatud teavet.<\/p>\n<p>Sellegipoolest, mis juhtub siis, kui soovite kaasata teavet metaandmete tabelist, kuid teil pole pistikprogrammide (nt <a href=\"https:\/\/searchwp.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">SearchWP<\/a> v\u00f5i <a href=\"https:\/\/www.relevanssi.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Relevanssi<\/a>) mugavust ?<\/p>\n<p>Lisaks oletagem, et kasutusjuhtum on m\u00f5eldud ainult administraatoritele ja ainult WordPressi haldusala jaoks. See t\u00e4hendab, et soovite otsida oma postitusi ekraanilt <strong>K\u00f5ik postitused<\/strong>, kuid soovite lisada otsingukriteeriumidesse ka postituse metaandmed.<\/p>\n<p>Mis siis?<\/p>\n<h2>Otsi postituse metaandmetest<\/h2>\n<p>Kui otsite kastist v\u00e4ljas postitusi WordPressi haldusalas, otsib see fraasi postituse pealkirjast, postituse v\u00e4ljav\u00f5ttest ja postituse sisust ning seej\u00e4rel tagastab need tulemused.<\/p>\n<p>Seega, et laiendada otsingut postituste metaandmetega, peame v\u00e4rskendama k\u00e4ivitatavat p\u00e4ringut nii, et see h\u00f5lmaks postituste metaandmete tabeleid. Kuid siin on midagi enamat. T\u00e4psemalt, suurima paindlikkuse ja parima kasutuskogemuse tagamiseks soovite teha j\u00e4rgmist.<\/p>\n<ul>\n<li>kaasake fraasi osi, et see ei otsiks artiklist s\u00f5na-s\u00f5nalt midagi,<\/li>\n<li>ja loomulikult k\u00e4sitlege \u00f5igesti juhtumit, kui otsingus\u00f5na pole sisestatud, nii et ekraani <strong>K\u00f5ik postitused<\/strong> saaks endiselt vaadata selle standardvormingus.<\/li>\n<\/ul>\n<p>See t\u00e4hendab, et me ei pea mitte ainult muutma otsingup\u00e4ringut nii, et see sisaldaks metav\u00f5tit ja metav\u00e4\u00e4rtust, vaid peame ka terveid fraase \u00f5igesti v\u00e4ltima, et saaksime operatsiooni v\u00f5i operatsiooni <code>LIKE<\/code>asemel kasutada toimingut.<code>IN``=<\/code><\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-159257-61e6f01916b5c.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-159257-61e6f01916b5c.png\" alt=\"Otsige postituste metaandmeid WordPressi administraatorialas\" ><\/a><\/p>\n<p>M\u00f5ned asjad, mida on oluline teada enne selle artikli \u00fclej\u00e4\u00e4nud osa lugemist, on j\u00e4rgmised:<\/p>\n<ul>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP_p\u00e4ring<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/hooks\/posts_where\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Posts_where<\/a> konks _<\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/hooks\/pre_get_posts\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Pre_get_posts<\/a> konks _<\/li>\n<li>Regulaaravaldised koos <a href=\"https:\/\/www.php.net\/manual\/en\/function.preg-replace.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">preg_replace<\/a><\/li>\n<li>WordPressi abifunktsioonid, nimelt <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/esc_sql\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">esc_sql<\/a>.<\/li>\n<\/ul>\n<p>L\u00f5ppkokkuv\u00f5ttes peame kasutama kahte konksu kahe kohandatud funktsiooniga. Ja kuna ma ei saa tuua t\u00e4ielikku n\u00e4idet selle kohta, kuidas see teie kasutusjuhul v\u00e4lja n\u00e4eb, peab kood olema veidi \u00fcldistatud.<\/p>\n<h3>Haakimine otsingusse<\/h3>\n<p>J\u00e4rgmises kokkuv\u00f5ttes n\u00e4ete kolme asja.<\/p>\n<ol>\n<li>Kinnitage, et kasutaja on haldusalal ja ta on redigeerimislehel.<\/li>\n<li>Kasutaja on sisestanud otsingu.<\/li>\n<li>Otsingufraas on teisendatud massiiviks, v\u00e4lditud ja lisatud WP_Query eksemplari metap\u00e4ringu atribuudile.<\/li>\n<\/ol>\n<p><a href=\"https:\/\/gist.github.com\/tommcfarlin\/4f2fa607bf002f52a7a8d1e08f75d86a#file-00-pre-get-posts-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Vaata allpool<\/a> :<\/p>\n<pre><code>&lt;?php\nadd_filter('pre_get_posts', function ($query) {\n\n    \/\/ Make sure we're in the admin, an administrator, and on the edit page.\n    if (!is_admin() || !current_user_can('manage_options') || 'edit' !== get_current_screen()-&gt;base) {\n        return;\n    }\n\n    \/\/ Determine if the user is running a search.\n    $search = filter_input(INPUT_GET, 's', FILTER_SANITIZE_STRING);\n    if (empty($search)) {\n        return;\n    }\n\n    $query-&gt;set(\n        'meta_query',\n        [\n            [\n                'key'     =&gt; 'headline_notes',\n                'value'   =&gt; esc_sql(preg_replace('\/s+?\/', '%', $search)), \/\/ For flexible search, make sure to replace all white space with % for LIKE.\n                'compare' =&gt; 'LIKE',\n            ],\n        ]\n    );\n});<\/code><\/pre>\n<p>Eeldades, et k\u00f5ik \u00fclaltoodud on t\u00f5esed, v\u00e4rskendab see p\u00e4ringut, mis k\u00e4ivitatakse WordPressi andmebaasis enne j\u00e4rgmise lehe renderdamist, nii et tulemused sisaldavad metaandmete teavet.<\/p>\n<h3>WHERE-klausli v\u00e4rskendamine<\/h3>\n<p>Enne kui oleme l\u00f5petanud, peame siiski veenduma, et oleme k\u00e4ivitatud p\u00e4ringut v\u00e4rskendanud.<\/p>\n<p>Vaikimisi koostatakse p\u00e4ring <code>AND<\/code>toiminguga, mis takistab meil postituste pealkirju, v\u00e4ljav\u00f5tteid, sisu ja metaandmeid korralikult l\u00e4bi vaatamast. siiski tuleb p\u00e4ringut v\u00e4rskendada, et see kasutaks <code>OR<\/code>toimingut.<\/p>\n<p>T\u00e4iesti otseses m\u00f5ttes t\u00e4hendab see, et see n\u00e4eb v\u00e4lja pealkirjas, sisus, v\u00e4ljav\u00f5ttes v\u00f5i metaandmetes.<\/p>\n<p>Olen valinud oma teostuses regulaaravaldise kasutamise, kuid teie teostus v\u00f5ib t\u00f6\u00f6tada ka alamstringide asendamisega. Seega on seda veidi kommenteeritud, et <a href=\"https:\/\/gist.github.com\/tommcfarlin\/4f2fa607bf002f52a7a8d1e08f75d86a#file-01-posts-where-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">anda teile v\u00f5imalikult palju paindlikkust<\/a>.<\/p>\n<pre><code>&lt;?php\nadd_filter( 'posts_where', function($where, $query) {\n\n    \/\/ Determine if 'headline_notes' appears in the WHERE clause.\n    $position = strpos($where, 'acme_meta_key');\n    if (false === $position) {\n        return $where;\n    }\n\n    \/\/ Look for the 'AND' clasue and replace it with 'OR' in the WHERE clause.\n    $regularExpress = '\/\/mi'; \/\/ Your regular expression.\n    $replacement = ''; \/\/ Your string to replace.\n\n    return preg_replace(\n        $regularExpression,\n        $replacement,\n        $where\n    );\n}, 10, 2);<\/code><\/pre>\n<p>See v\u00e4rskendab <code>WHERE<\/code>klauslit, mis k\u00e4ivitatakse artikli algosas, kuhu lisame metaandmeid, t\u00f6\u00f6komplekti l\u00f5puleviimiseks.<\/p>\n<h2>On ka teisi viise<\/h2>\n<p>Pange t\u00e4hele, et vajalike tulemuste saavutamiseks on WP_Queryga t\u00f6\u00f6tamiseks m\u00f5ned uskumatult paindlikud viisid. Ja teie rakendamine varieerub s\u00f5ltuvalt sellest, mida te teete.<\/p>\n<p>Nii et kaaluge seda \u00fchte paljudest kasutusviisidest; aga teadke, et kui teil on:<\/p>\n<ol>\n<li>\u00fcks v\u00f5ti,<\/li>\n<li>v\u00e4\u00e4rtus (v\u00f5i v\u00e4\u00e4rtus, mille saab jagada massiiviks),<\/li>\n<li>ja soovite otsida metaandmeid tavap\u00e4rase postituse sisu k\u00f5rval<\/li>\n<\/ol>\n<p>Siis see toimib.<\/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>Siit saate teada, kuidas otsingut postituste metaandmete lisamiseks laiendada. Peame k\u00e4ivitatavat p\u00e4ringut v\u00e4rskendama nii, et see h\u00f5lmaks postituste metaandmete tabeleid.<\/p>\n","protected":false},"author":1,"featured_media":236453,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,833,894,916,842,802,863],"tags":[1165],"class_list":["post-231311","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-juhend-algajatele","category-kood","category-muud","category-opetused","category-php-4","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231311","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=231311"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231311\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/236453"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=231311"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=231311"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=231311"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}