Aangepaste query's schrijven in WordPress

Met aangepaste query's kunt u elke gewenste gegevenslezing en / of -manipulatie uitvoeren. Direct opent een wereld van nieuwe mogelijkheden.


Waarom aangepaste zoekopdrachten gebruiken?

De basisfunctionaliteiten in WordPress zijn prima voor de meeste eenvoudige behoeften, maar wat zou u doen als u bepaalde specifieke behoeften wilt implementeren? Schrijf je misschien een plug-in? Dan zou u nu moeten leren hoe u SQL-query's in WordPress kunt gebruiken! De officiële referenties zijn te vinden in de WordPress Codex (Custom Queries en de WPDB-klasse).


De wpdb Klasse

Deze globale WordPress-klasse is de sleutel voor het gebruik van query's. In feite gebruikt elke functie deze klasse.


Gebruik makend van vraag

De query-functie heeft een tekenreeks nodig die de aangepaste query bevat. De terugkerende waarde is een geheel getal dat overeenkomt met het aantal rijen dat is aangetast / geselecteerd en is onwaar als er een fout optreedt.

 $ query = "SELECT COUNT (apple) FROM fruits"; $ Wpdb-> vraag ($ vraag);

get_results

Deze functie krijgt meerdere rijen bij het uitvoeren van een query. Standaard is het resultaat van de functie een array.

 $ query = "SELECT * FROM wp_terms wt INNERLIJK JOIN wp_term_taxonomy wtt ON wt.term_id = wtt.term_id WHERE wtt.taxonomy = 'post_tag' AND wtt.count = 0"; $ Wpdb-> get_results ($ vraag);

get_var

Hiermee wordt één variabele uit de database geretourneerd, maar het volledige resultaat van de query wordt in de cache bewaard voor later gebruik. Retourneert NULL als er geen resultaat wordt gevonden.

 $ query = "SELECTEER COUNT (*) VAN gebruikers"; $ Wpdb-> get_var ($ vraag);

get_row

Een volledige rij wordt als resultaat van de functie geretourneerd, die een object, een associatieve array of een numeriek geïndexeerde array kan zijn. NULL is het resultaat wanneer er geen overeenkomende gegevens worden gevonden. result_type kan zijn VOORWERP, ARRAY_A of ARRAY_N (object, associatieve array of genummerde array). Offset is een geheel getal met een standaardwaarde van 0.

 $ query = "SELECT * FROM wp_posts WHERE post_type = 'post'"; $ wpdb-> get_row ($ query, ARRAY_A, 3);

get_col

Gebruik deze functie om een ​​kolom te krijgen. Uitvoer zal een dimensionale array zijn. Een lege array wordt geretourneerd als er geen resultaat wordt gevonden. De tweede parameter is de kolomverschuiving.

 $ query = "SELECT * FROM wp_posts WHERE post_type = 'post'"; $ wpdb-> get_col ($ query, 3);

Voorbereide vragen

Volgens de php.net handleiding:

"Ze [voorbereide query's] kunnen worden beschouwd als een soort gecompileerde sjabloon voor de SQL die een toepassing wil uitvoeren, die kan worden aangepast met behulp van variabele parameters."

U kunt SQL-query's beschermen tegen SQL-injectieaanvallen. In het kort moeten gegevens in query's SQL-escaped zijn voordat de query wordt uitgevoerd om injectie-aanvallen te voorkomen. Dit kan eenvoudig worden gedaan met de bereidingsmethode. In het volgende voorbeeld zullen de waarden '10', 'aap' en 'apple' worden geëscaped wanneer ze in deze methode worden gebruikt.

 // Gebruik: $ wpdb-> prepare ('query' [, value_parameter, value_parameter ...]); $ wpdb-> query ($ wpdb-> prepare ("INSERT INTO test_table (post_id, animal, food) VALUES (% d,% s,% s)", array (10, 'monkey', 'apple'))) ;

Foutmeldingen instellen

U kunt foutmeldingen in- en uitschakelen met de show_errors en hide_errors functies, maar u kunt ook afdrukken:

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

Cache-controle

Het verwijderen van de cache kan worden gedaan met de doorspoelen functie.

 $ Wpdb-> flush ();

Gegevens invoegen

 $ wpdb-> insert ($ table, $ data, $ format); $ wpdb-> insert ('foods', array ('fruit' => 'apple', 'year' => 2012), array ('% s', '% d'));

De gebruikte parameters zijn:

  • de naam van de tabel om gegevens in te voegen
  • de in te voegen gegevens (kolom => waardeparen) zonder te ontsnappen
  • een reeks indelingen die moet worden toegewezen aan elk van de waarden in $ data. Als ze niet aanwezig zijn, worden alle waarden als strings behandeld

Gegevens bijwerken

 $ wpdb-> update ('foods', array ('fruit' => 'apple', // string 'year' => 'value2' // integer (getal)), array ('ID' => 1), array ('% s', // waarde1 '% d' // waarde2), array ('% d'));

De gebruikte parameters zijn:

  • tafel naam
  • gegevens
  • waar voorwaarden
  • formaat
  • where_format

Kolom informatie

U kunt informatie krijgen over de kolommen van het meest recente resultaat met deze functie. Wanneer een functie is geretourneerd VOORWERP en er zijn eigenschappen waar je niet veel over weet, dit kan handig zijn.

 $ wpdb-> get_col_info ('type', offset);
  • Type: de informatie die u wilt ophalen, enkele voorbeelden zijn hier te vinden
    • naam - kolomnaam (dit is de standaardnaam)
    • tafel - naam van de tabel waartoe de kolom behoort
    • maximale lengte - maximale lengte van de kolom
    • niet nul - 1 als de kolom niet NULL kan zijn
    • meer is te vinden in de WordPress Codex WPDB-referentie
  • Offset: geef de kolom op voor het ophalen van informatie (0 is de eerste kolom)

Verwijzen naar WordPress Tables

Van WordPress-databasetabellen kan worden verwezen in de wpdb klasse. Dit is erg handig omdat tabelnamen anders kunnen zijn dan de standaardnamen. Hier is een lijst met WordPress-databasetabelverwijzingen:

  • $ Wpdb-> posten;
  • $ Wpdb-> postmeta;
  • $ Wpdb-> opmerkingen;
  • $ Wpdb-> commentmeta;
  • $ Wpdb-> termen;
  • $ Wpdb-> term_taxonomy;
  • $ Wpdb-> term_relationships;
  • $ Wpdb-> gebruikers;
  • $ Wpdb-> usermeta;
  • $ Wpdb-> banden;
  • $ Wpdb-> opties;

Merk op dat we het voorvoegsel niet hoeven toe te voegen, dat is het voordeel hier waar het wpdb klas zorgt daar voor ons voor.

Daar hebben we het! Een referentie voor aangepaste query's in WordPress, alles op één plek voor u.