WordPressi andmebaasist teabe hankimisel eelistan vältida otseste andmebaasipäringute kasutamist, kuid mõnikord võivad need olla kasulikud (ja see on oluline, et see oleks õigesti tehtud).
Üks kasutusjuhtum, mille puhul see võib olla kasulik, on siis, kui teil on vaja hankida ühte tüüpi andmete kogum. Näide: Oletame, et peate laadima kõik WordPressi kohandatud väljad.
Selle kirjutamise ajal ei olnud ma teadlik ühtegi funktsiooni, mis seda teeks, seega esitan andmebaasist päringu selle tegemiseks järgmiselt.
Laadige kõik WordPressi kohandatud väljad
Teatud postitusega seotud kohandatud väljade kohta tuleb märkida mitu asja.
- kohandatud väljad salvestatakse postituse metaandmetesse,
- kohandatud väljad loetakse privaatseks, nii et nende ees on allkriips,
- WordPressi kodeerimisstandarditele see ei meeldi (nii et peate võib-olla standardeid eirama)
Kõike nende kohta saate lugeda Codexist.
Ja jah, kogu kohandatud teabe hankimine ühe postituse jaoks on lihtne. Kui aga töötate projekti kallal, kus peate hankima kõik kohandatud väljad, nimelt need, mis on privaatsed, peate veenduma, et otsite allkriipsuga algavaid stringe.
Nii et kõigi WordPressi kohandatud väljade laadimiseks andmebaasis kasutan järgmist päringut :
<?php
function get_the_custom_fields() {
global $wpdb;
$results = $wpdb->get_results(
$wpdb->prepare(
"
SELECT meta_key, meta_value
FROM $wpdb->postmeta
WHERE meta_key REGEXP '%s'
", '^[_]') );
return $results;
}
Mõned asjad, mida ülaltoodud päringu puhul tähele panna:
- Kasutan ettevalmistamise funktsiooni enne get_results. See on parameetrite ja turvalisuse jaoks. Kui see on teile uus, soovitan seda artiklit lugeda .
- See tagastab kõik massiivi metavõtmed ja metaväärtused,
- Olenevalt sellest, kui palju kirjeid soovite tagastada, võib see veidi aega võtta (ja võib-olla tuleks seda teha partiidena).
Lõpuks, neile, kes on uudishimulikud, ei eksisteeri indekseid veerus meta_value, vaid veerus meta_key.
Tabeli Post Meta veerud koos indeksidega.
Nii et kui otsustate päringut muuta ja soovite kasutada veerge, millel on indeksid, vaadake meta_id, post_id ja meta_key.