Tramite get_posts() è possibile selezionare una sequenza esatta di post utilizzando il parametro post__in negli argomenti passati negli inputs. L’ordine tuttavia non è coerente con la sequenza indicata in quanto WordPress esegue dei controlli sulla clausula ORDER BY della select, nonostante dalla versione 2.8 sia disponibile il valore none.
Categoria ‘MySQL/SQL’
WordPress: get_posts() e orderby
WordPress snippet: estrarre meta value con get_posts()
Lavorando con un Custom Post Type (CPT) viene spontaneo utilizzare le funzioni interne di WordPress per visualizzare e filtrare i post di questo tipo. Sia che si usi la get_posts() sia che si crei direttamente un oggetto WP_Query, risulta comodissimo poter creare loop personali sulle proprie tipologie di post. Inoltre WordPress permette di effettuare filtri per tassionomie personali, sul count, sull’ordine, arrivando fino ai meta data. Utilissimo, infatti, è il processo che permette di indicare nelle condizioni di where che tipo di meta data confrontare e con che regole.
Bachi di inizio anno: WordPress update e WPML get_page_by_path()
Il 2012 è iniziato con qualche ora di deep-debugging a causa di due (noti) bachi abbastanza fastidiosi. Il primo, tra l’altro abbastanza datato, presente nel core di WordPress che riguarda il metodo update() della classe wpdb, con la globale (e famosa) omonima istanza $wpdb. Il difetto appare quando si tenta di aggiornare un campo a NULL. Nonostante le numerose lamentele, il team di sviluppo WordPress sembra non trovare soluzione al fastidioso problema. Infatti, ad oggi, l’unica soluzione è quella di scriversi l’SQL per proprio conto.
MySQL: select casuale con paginazione
Selezionare una serie di righe da una tabella in modo casuale è semplicissimo, basta usare ORDER BY RAND() nella nostra select. Alcuni preferiscono usare anche tecniche diverse, che vanno dall’uso di PHP alla scrittura di select particolari. Il motivo è che ORDER BY RAND() risulta lenta in quanto MySQL crea una tabella temporanea con tutti i risultati e assegna poi ad ogni riga un indice casuale, ritornando poi un risultato ordinate (casuale)!
Very short snippet: incrementare un campo in SQL
Nell’ultima release di WP Bannerize ho introdotto un nuovo campo in tabella che indica quante volte un banner è stato “cliccato”. Per eseguire l’operazione di valore = valore +1 in SQL ho utilizzato:
1 | UPDATE tabella SET `campo` = `campo` + 1 WHERE id = id_record; |
Very short snippet: ottenere il numero di Post, Page e Attachment
Come molti di voi sanno bene, la tabella wp_posts di WordPress è utilizzata per memorizzare Post, Pagine e allegati. La tipologia dell’elemento memorizzato è determinata dal campo post_type. Con la select proposta qui sotto, è possibile “contare” singolarmente le varie tipologie di elementi memrizzate in wp_posts.
Very short trick: aggiustare le date tramite MySQL
Può capitare di trovarsi nell’impossibilità di modificare l’impostazione dell’orario su un Web Server o lavorare su una tabella MySQL dove un campo TIMESTAMP è impostato su ON UPDATE CURRENT_TIMESTAMP. Così diventa necessario, a fronte di una select, aggiustare l’orario recuperato con il fuso orario corretto. Ad esempio se il nostro server si trova a Los Angeles, con una fuso orario di 9 ore indietro, basta semplicemente utilizzare:
1 2 | SELECT DATE_ADD( campo_timestamp, INTERVAL 9 HOUR) AS `local_timestamp` FROM mytable |
Il campo campo_timestamp contiene la data reale del server mentre l’alias local_timestamp è la stessa data 9 ore avanti.
Very short trick: duplicare o clonare una o più righe in MySQL
Per duplicare totalmente il contenuto di una tabella su se stessa basta usare:
1 | INSERT INTO MYTABLE SELECT * FROM MYTABLE |
È possibile anche utilizzare la clausa di WHERE se necessario:
1 | INSERT INTO MYTABLE SELECT * FROM MYTABLE WHERE a=b |
Nel caso la tabella possiede qualche indice o chiave univoca, che provocherebbe un errore, è possibile filtrare i campi da duplicare:
1 | INSERT INTO MYTABLE (field1, field2, ...) SELECT field1, field2, ... FROM MYTABLE |
Addirittura è possibile duplicare un record e modificare un valore, ad esempio duplico un campo e gli aggiungo 1:
1 | INSERT INTO MYTABLE (field1, field2, ...) SELECT (field1+1), field2, ... FROM MYTABLE |






Ultimi Commenti
Giovambattista Fazioli: @ale: Come indicato @Kevin vedi sul repo di GitHub: https://github.com/gfazioli/Ch roma-Key
Giovambattista Fazioli: @Kevin: See https://github.com/gfazioli/Ch roma-Key
Kevin: Very nice example – would like to see the .fla too!
Ludovica: Ciao! Ti spiego il mio dubbio. Quando scrivo un post non inserisco immagini nell’articolo (se così...
Marco: ciao @Giovambattista Fazioli, grazie per tutte le delucidazioni di questa ottima guida. Avrei un quesito da...