Kun haen tietoa WordPress-tietokannasta, vältän mieluummin suoria tietokantakyselyjä, mutta joskus niistä voi olla hyötyä (ja on tärkeää, että se tehdään oikein).
Yksi käyttötapaus, jossa se voi olla hyödyllistä, on silloin, kun sinun on noudettava yhden tyypin tietojoukko. Esimerkki: Oletetaan, että sinun on ladattava kaikki WordPressin mukautetut kentät.
Tätä kirjoittaessani ei ole tietoinen toimintoa, joka tekisi tämän, joten teen näin kyselyn tietokannasta.
Lataa kaikki WordPressin mukautetut kentät
Tiettyyn viestiin liittyvissä muokatuissa kentissä on useita huomioitavia asioita:
- mukautetut kentät tallennetaan postin metatietoihin,
- mukautettuja kenttiä pidetään yksityisinä, joten niiden eteen on liitetty alaviiva,
- WordPress-koodausstandardit eivät pidä tästä (joten sinun on ehkä jätettävä standardit huomiotta)
Voit lukea niistä kaikki Codexista.
Ja kyllä, on helppoa saada kaikki mukautetut tiedot yhteen viestiin. Mutta jos työskentelet projektissa, jossa sinun on noudettava kaikki mukautetut kentät, nimittäin ne, jotka ovat yksityisiä, sinun on varmistettava, että etsit alaviivalla alkavia merkkijonoja.
Joten ladataksesi kaikki WordPressin mukautetut kentät tietokantaan, käytän tässä kyselyä :
<?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;
}
Muutama huomioitavaa yllä olevasta kyselystä:
- Käytän valmistelu – funktiota ennen get_results -toimintoa. Tämä on parametrointia ja turvallisuutta varten. Jos se on sinulle uutta, suosittelen tämän artikkelin lukemista .
- Tämä palauttaa kaikki taulukon metaavaimet ja meta-arvot,
- Riippuen siitä, kuinka monta tietuetta haluat palauttaa, tämä voi kestää jonkin aikaa (ja se pitäisi ehkä tehdä erissä).
Lopuksi, niille, jotka ovat kiinnostuneita, indeksejä ei ole meta_value-sarakkeessa, mutta niitä on meta_avain-sarakkeessa.
Post Meta -taulukon sarakkeet indekseillä.
Joten jos päätät muokata kyselyä ja haluat käyttää sarakkeita, joissa on indeksit, katso meta_id, post_id ja meta_key.