✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Hae viestien metatiedoista WordPressin hallinta-alueelta

20

Kun olet työskennellyt WordPressin kanssa pidemmän aikaa, on todennäköistä, että olet jossain määrin työskennellyt julkaisujen metatietojen kanssa. Ehkä olet vain lukenut metatietoja tietokannasta tai ehkä olet sekä kirjoittanut tietokantataulukkoon että lukenut siitä.

Se voi olla todella tehokas sovellusliittymä aina, kun sinun on liitettävä tiettyjä tietoja viesteihisi (tai, jos haluat abstraktoida asioita vielä enemmän, malleihisi).

Mitä tapahtuu, kun haluat sisällyttää tietoja metatietotaulukosta, mutta sinulla ei ole lisäosien, kuten SearchWP :n tai Relevanssin, mukavuutta ?

Lisäksi oletetaan, että käyttötapaus on tarkoitettu vain järjestelmänvalvojille ja vain WordPressin hallinta-alueelle. Toisin sanoen haluat etsiä viestejäsi Kaikki viestit -näytöstä, mutta haluat myös sisällyttää viestien metatiedot hakuehtoihin.

Mitä sitten?

Hae viestin metatiedoista

Aina kun etsit viestejä WordPressin hallinta-alueella, se etsii julkaisun otsikosta, otteen ja postauksen sisällöstä lauseen ja palauttaa sitten kyseiset tulokset.

Laajentaaksemme haun sisältämään myös julkaisujen metatiedot, meidän on päivitettävä suoritettu kysely siten, että se sisältää julkaisun metatietotaulukot. Mutta siinä on muutakin. Erityisesti joustavuuden ja parhaan käyttökokemuksen saavuttamiseksi sinun kannattaa:

  • sisällyttää lauseen osia, jotta se ei vain etsi jotain sanatarkasti artikkelista,
  • ja tietysti käsitellä oikein tapausta, jos hakutermiä ei anneta, jotta Kaikki viestit -näyttö voidaan edelleen tarkastella sen vakiomuodossa.

Tämä tarkoittaa, että meidän ei tarvitse vain muokata hakukyselyä sisältämään meta-avainta ja meta-arvoa, vaan meidän on vältettävä kokonaisia ​​lauseita oikein, jotta voimme käyttää LIKEtoimintoa INoperaation tai =operaation sijaan.

Hae viestien metatiedoista WordPressin hallinta-alueelta

Jotkut asiat, jotka on tärkeää tietää ennen tämän artikkelin loppuosan lukemista, ovat:

Viime kädessä meidän on käytettävä kahta koukkua kahdella mukautetulla toiminnolla. Ja koska en voi antaa täydellistä esimerkkiä siitä, miltä tämä saattaa näyttää käyttötapauksessasi, koodin on oltava hieman yleistetty.

Hakuihin tarttuminen

Seuraavassa sisällössä näet kolme asiaa:

  1. Vahvista, että käyttäjä on hallinta-alueella ja hän on muokkaussivulla.
  2. Käyttäjä on tehnyt haun.
  3. Hakulauseke on muunnettu taulukoksi, pakotettu ja lisätty WP_Query-esiintymän metakyselyominaisuuteen.

Katso alla :

<?php
add_filter('pre_get_posts', function ($query) {

    // Make sure we're in the admin, an administrator, and on the edit page.
    if (!is_admin() || !current_user_can('manage_options') || 'edit' !== get_current_screen()->base) {
        return;
    }

    // Determine if the user is running a search.
    $search = filter_input(INPUT_GET, 's', FILTER_SANITIZE_STRING);
    if (empty($search)) {
        return;
    }

    $query->set(
        'meta_query',
        [
            [
                'key'     => 'headline_notes',
                'value'   => esc_sql(preg_replace('/s+?/', '%', $search)), // For flexible search, make sure to replace all white space with % for LIKE.
                'compare' => 'LIKE',
            ],
        ]
    );
});

Olettaen, että kaikki yllä olevat pitävät paikkansa, tämä päivittää WordPress-tietokantaa vastaan ​​ajetun kyselyn ennen seuraavan sivun hahmontamista siten, että tulokset sisältävät metatietotiedot.

WHERE-lausekkeen päivittäminen

Ennen kuin olemme valmis, meidän on kuitenkin myös varmistettava, että olemme päivittäneet suoritettavan kyselyn.

Kysely on oletusarvoisesti rakennettu ANDtoiminnolla, joka estää meitä katsomasta oikein viestien otsikoita, otteita, sisältöä ja metatietoja. kysely on kuitenkin päivitettävä, jotta se käyttää ORtoimintoa.

Kirjaimellisesti tämä tarkoittaa, että se näyttää otsikossa, sisällössä, otteessa tai metatiedoissa.

Olen valinnut säännöllisen lausekkeen käytön toteutuksessani, mutta toteutus saattaa toimia alimerkkijonojen korvaamisen kanssa. Siten siellä on hieman kommentteja, jotta saat mahdollisimman paljon joustavuutta.

<?php
add_filter( 'posts_where', function($where, $query) {

    // Determine if 'headline_notes' appears in the WHERE clause.
    $position = strpos($where, 'acme_meta_key');
    if (false === $position) {
        return $where;
    }

    // Look for the 'AND' clasue and replace it with 'OR' in the WHERE clause.
    $regularExpress = '//mi'; // Your regular expression.
    $replacement = ''; // Your string to replace.

    return preg_replace(
        $regularExpression,
        $replacement,
        $where
    );
}, 10, 2);

Tämä päivittää WHERElauseen, joka on käynnistetty, jotta artikkelin alkuosassa, johon lisäämme metatietoja, on työsarja.

On muitakin tapoja

Huomaa, että WP_Queryn kanssa on joitakin uskomattoman joustavia tapoja saada tarvitsemasi tulokset. Ja toteutuksesi vaihtelee sen mukaan, mitä olet tekemässä.

Joten harkitse tätä yhtenä monista käyttötavoista; Muista kuitenkin, että jos sinulla on:

  1. yksi avain,
  2. arvo (tai arvo, joka voidaan jakaa taulukkoon),
  3. ja haluat etsiä metatietoja perinteisen viestisisällön rinnalla

Sitten tämä toimii.

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja