Scrivere query personalizzate in WordPress

Con le query personalizzate è possibile effettuare qualsiasi lettura e / o manipolazione dei dati che si desidera. Immediatamente si apre un mondo di nuove possibilità.


Perché utilizzare le query personalizzate?

Le funzionalità di base in WordPress vanno bene per le esigenze più semplici, ma cosa faresti se volessi implementare delle esigenze specifiche? Stai forse scrivendo un plugin? Allora dovresti imparare come puoi usare le query SQL in WordPress adesso! I riferimenti ufficiali possono essere trovati nel codice WordPress (query personalizzate e classe WPDB).


Il wpdb Classe

Questa classe globale di WordPress è la chiave per utilizzare le query. In effetti, ogni funzione utilizza questa classe.


utilizzando domanda

La funzione query richiede una stringa contenente la query personalizzata. Il valore restituito è un numero intero corrispondente al numero di righe interessate / selezionate e falso quando si verifica un errore.

 $ query = "SELEZIONA CONTO (mela) DA frutti"; $ Wpdb-> query ($ query);

get_results

Questa funzione ottiene più righe quando si esegue una query. Di default il risultato della funzione è un array.

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

get_var

Ciò restituirà una variabile dal database, ma il risultato completo della query viene memorizzato nella cache per un utilizzo successivo. Restituisce NULL se non viene trovato alcun risultato.

 $ query = "SELECT COUNT (*) FROM users"; $ Wpdb-> get_var ($ query);

get_row

Una riga completa verrà restituita come risultato della funzione, che può essere un oggetto, un array associativo o una matrice indicizzata numericamente. NULL è il risultato quando non vengono trovati dati corrispondenti. result_type può essere OGGETTO, ARRAY_A o ARRAY_N (oggetto, array associativo o matrice numerata). Offset è un numero intero con un valore predefinito di 0.

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

get_col

Per ottenere una colonna, usa questa funzione. L'output sarà una matrice dimensionale. Un array vuoto verrà restituito se non viene trovato alcun risultato. Il secondo parametro è l'offset della colonna.

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

Query preparate

Secondo il manuale di php.net:

"Loro [le query preparate] possono essere pensate come una sorta di modello compilato per l'SQL che un'applicazione vuole eseguire, che può essere personalizzata utilizzando parametri variabili."

È possibile proteggere le query SQL dagli attacchi di SQL injection. In breve i dati nelle query devono essere preceduti da escape SQL prima che la query venga eseguita per prevenire attacchi di tipo injection. Questo può essere fatto facilmente con il metodo di preparazione. Nell'esempio seguente, i valori '10', 'monkey' e 'apple' saranno sfuggiti quando usati in questo metodo.

 // Uso: $ wpdb-> prepare ('query' [, value_parameter, value_parameter ...]); $ wpdb-> query ($ wpdb-> prepare ("INSERT INTO test_table (post_id, animale, cibo) VALORI (% d,% s,% s)", array (10, 'monkey', 'apple')))) ;

Impostazione dei messaggi di errore

Puoi attivare e disattivare i messaggi di errore con show_errors e hide_errors funzioni, ma puoi anche stampare:

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

Controllo della cache

L'eliminazione della cache può essere effettuata con rossore funzione.

 $ Wpdb-> flush ();

Inserimento di dati

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

I parametri utilizzati nell'ordine sono:

  • il nome della tabella in cui inserire i dati
  • i dati da inserire (colonna => coppie di valori) senza eseguire l'escape
  • una serie di formati da mappare a ciascuno dei valori in $ data. Se non è presente, tutti i valori saranno considerati come stringhe

Aggiornamento dei dati

 $ wpdb-> update ('foods', array ('fruit' => 'apple', // stringa 'year' => 'value2' // intero (numero)), array ('ID' => 1), array ('% s', // valore1 '% d' // valore2), matrice ('% d'));

I parametri utilizzati nell'ordine sono:

  • nome della tabella
  • dati
  • dove condizioni
  • formato
  • where_format

Informazioni sulla colonna

È possibile ottenere informazioni sulle colonne del risultato più recente con questa funzione. Quando una funzione ha restituito un OGGETTO e ci sono proprietà di cui non sai molto, questo può essere utile.

 $ wpdb-> get_col_info ('tipo', offset);
  • Digitare: le informazioni che si desidera recuperare, alcuni esempi sono qui
    • nome - nome colonna (questo è il valore predefinito)
    • tavolo - nome della tabella a cui appartiene la colonna
    • lunghezza massima - lunghezza massima della colonna
    • non nullo - 1 se la colonna non può essere NULL
    • più può essere trovato nel riferimento WPDB del codice WordPress
  • Offset: specifica la colonna da cui recuperare le informazioni (0 è la prima colonna)

Riferimenti alle tabelle di WordPress

Le tabelle del database WordPress possono essere referenziate in wpdb classe. Questo è molto comodo in quanto i nomi delle tabelle possono essere diversi da quelli predefiniti. Ecco un elenco di riferimenti alle tabelle del database di WordPress:

  • $ Wpdb-> posti;
  • $ Wpdb-> postmeta;
  • $ Wpdb-> commenti;
  • $ Wpdb-> commentmeta;
  • $ Wpdb-> termini;
  • $ Wpdb-> term_taxonomy;
  • $ Wpdb-> term_relationships;
  • $ Wpdb-> utenti;
  • $ Wpdb-> usermeta;
  • $ Wpdb-> link;
  • $ Wpdb-> opzioni;

Si noti che non è necessario includere il prefisso, questo è il vantaggio qui dove il wpdb la classe si prende cura di questo per noi.

Ce l'abbiamo! Un riferimento per le query personalizzate in WordPress, tutto in un unico posto per te.