Skriva egna frågor i WordPress

Med anpassade frågor kan du göra data läsning och / eller manipulation du vill ha. Omedelbart öppnar en värld av nya möjligheter.


Varför använda anpassade frågor?

De grundläggande funktionerna i WordPress är bra för de flesta enkla behov, men vad skulle du göra om du vill genomföra vissa specifika behov? Skriver du kanske ett plugin? Då bör du lära dig hur du kan använda SQL-frågor i WordPress just nu! De officiella referenserna finns i WordPress Codex (Custom Queries och WPDB-klassen).


De wpdb Klass

Den här globala WordPress-klassen är nyckeln till att använda frågor. Faktum är att varje funktion använder den här klassen.


Använder sig av fråga

Frågfunktionen behöver en sträng som innehåller den anpassade frågan. Det återstående värdet är ett heltal som motsvarar antalet rader som berörs / valda och falska när det finns ett fel.

 $ query = "VÄLJ COUNT (äpple) FRÅN frukt"; $ Wpdb-> fråga ($ query);

get_results

Den här funktionen får flera rader när du utför en fråga. Som standard är resultatet av funktionen en grupp.

 $ query = "SELECT * FRÅN wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id = wtt.term_id VÄR wtt.taxonomy = 'post_tag' och wtt.count = 0"; $ Wpdb-> get_results ($ query);

get_var

Detta kommer att returnera en variabel från databasen, men det fullständiga resultatet av frågan cachas för senare användning. Returnerar NULL om inget resultat hittas.

 $ query = "VÄLJ COUNT (*) FRÅN användare"; $ Wpdb-> get_var ($ query);

get_row

En fullständig rad returneras som ett resultat av funktionen, som kan vara ett objekt, en associativ array eller en numeriskt indexerad grupp. NULL är resultatet när ingen matchande data hittades. result_type kan vara OBJEKT, ARRAY_A eller ARRAY_N (objekt, associativ array eller numrerad array). Offset är ett heltal med en standard på 0.

 $ query = "VÄLJ * FRÅN wp_posts WHERE post_type = 'post'"; $ wpdb-> get_row ($ query, ARRAY_A, 3);

get_col

För att få en kolumn, använd den här funktionen. Utgången kommer att vara en måttlig uppsättning. En tom array returneras om inget resultat hittas. Den andra parametern är kolumnförskjutningen.

 $ query = "VÄLJ * FRÅN wp_posts WHERE post_type = 'post'"; $ wpdb-> get_col ($ query, 3);

Förberedda frågor

Enligt php.net manualen:

"De [förberedda frågorna] kan betraktas som en slags kompilerad mall för SQL som en applikation vill köra, som kan anpassas med hjälp av variabla parametrar."

Du kan skydda SQL-frågor mot SQL-injektionsattacker. Korta data i frågor måste vara SQL-escape innan frågan utförs för att förhindra injektionsattacker. Detta kan enkelt göras med förberedelsemetoden. I följande exempel kommer värdena "10", "apa" och "äpple" att rymma när de används i den här metoden.

 // Användning: $ wpdb-> förbereda ("fråga" [, value_parameter, value_parameter ...]); $ wpdb-> fråga ($ wpdb-> förbereda ("INSERT IN TO test_table (post_id, animal, food) VALUES (% d,% s,% s)", array (10, "apa", "äpple"))) ;

Ställa in felmeddelanden

Du kan aktivera och inaktivera felmeddelanden med show_errors och hide_errors funktioner, men du kan också skriva ut:

 $ Wpdb-> show_errors (); $ Wpdb-> hide_errors ();

Cache Control

Att radera cacheminnet kan göras med spola fungera.

 $ Wpdb-> flush ();

Infoga data

 $ wpdb-> insert ($ tabell, $ data, $ format); $ wpdb-> insert ('food', array ('frukt' => 'äpple', 'år' => 2012), array ('% s', '% d'));

De använda parametrarna i ordning är:

  • namnet på tabellen för att infoga data i
  • data som ska infogas (kolumn => värdepar) utan att flyga
  • en rad olika format som ska mappas till var och en av värdena i $ uppgifter. Om inte närvarande, kommer alla värden att behandlas som strängar

Uppdatering av data

 $ wpdb-> uppdatering ('mat', array ('fruit' => 'apple', // string 'year' => 'value2' // heltal (nummer)), array ('ID' => 1) array ('% s', // value1 '% d' // value2), array ('% d'));

De använda parametrarna i ordning är:

  • tabellnamn
  • data
  • där förhållandena
  • formatera
  • where_format

Kolumninformation

Du kan få information om kolumnerna för det senaste resultatet med den här funktionen. När en funktion har returnerats en OBJEKT och det finns egenskaper du inte vet mycket om, det kan vara användbart.

 $ wpdb-> get_col_info ('typ', förskjutning);
  • Typ: Den information du vill hämta, några exempel är här
    • namn - kolumnnamn (detta är standard)
    • tabell - namnet på tabellen kolumnen tillhör
    • Maxlängd - högsta längden på kolumnen
    • not_null - 1 om kolumnen inte kan vara NULL
    • mer finns i WordPress Codex WPDB-referensen
  • Offset: Ange kolumnen för att hämta information (0 är den första kolumnen)

Hänvisar till WordPress-tabeller

WordPress databas tabeller kan refereras i wpdb klass. Det här är mycket praktiskt eftersom tabellnamn kan vara annorlunda än de standardiserade. Här är en lista över WordPress databas tabell referenser:

  • $ Wpdb-> inlägg;
  • $ Wpdb-> postmeta;
  • $ Wpdb-> kommentarer;
  • $ Wpdb-> commentmeta;
  • $ Wpdb-> villkor;
  • $ Wpdb-> term_taxonomy;
  • $ Wpdb-> term_relationships;
  • $ Wpdb-> användare;
  • $ Wpdb-> usermeta;
  • $ Wpdb-> länkar;
  • $ Wpdb-> alternativ;

Observera att vi inte behöver inkludera prefixet, det är fördelen här där wpdb klass tar hand om det för oss.

Där har vi det! En referens för anpassade frågor i WordPress, allt på ett ställe för dig.