Se possedete un blog WordPress o lo utilizzate per sviluppare quotidianamente questo articolo fa al caso vostro; ho riassunto una dozzina di frammenti di codice alcuni dei quali di difficile reperibilità.
1 – Paginazione con tassonomie e termini
Questo pezzo di codice permette di avere una paginazione anche all’interno di termini e tassonomie
$p = get_query_var('paged') ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'nome_post_type',
'nome_tassonomia' => 'nome_termine',
'paged' => $p,
'post_per_page' => 10);
$query = new WP_Query($args);
while ($query->have_posts()) : $query->the_post();
the_title();
the_excerpt();
endwhile;
wp_reset_postdata();
2 – Rimuovere formattazione automatica
Come già trattato in questo articolo è possibile sia eliminare l’auto-paragrafo che la formattazione automatica degli articoli, per fare ciò si antepone uno dei due seguenti filtri prima della chiamata the_content()
remove_filter('the_content', 'wpautop'); //elimina l'auto-paragrafo
remove_filter('the_content', 'wptexturize'); //elimina la formattazione automatica
3 – Stampare i valori di campi custom
La bellezza dell’architettura WordPress stà nella possibilità di gestire campi custom in totale libertà, sono facilmente implementabili da back-end e da front-end si visualizzano con il seguente codice:
$chiave = get_post_custom_values('chiave');
foreach ( $chiave as $key => $value ) {
echo "$key => $value ('chiave')
";
}
4 – Stampare il valore di un singolo campo custom
Per visualizzare, invece, un dato campo custom:
$meta_value = get_post_meta($post_id, $key, $single);
echo $meta_value;
5 – Ricavare l’immagine in evidenza
La featured image o più conosciuta come immagine in evidenza si visualizza in questo modo:
if ( has_post_thumbnail() ) {
the_post_thumbnail();
}
All’interno possiamo definire 4 tipi di dimensioni:
the_post_thumbnail('thumbnail'); //small
the_post_thumbnail('medium'); //media
the_post_thumbnail('large'); //larga
the_post_thumbnail( array(100,100) ); //custom
6 – Ricavare il link dall’immagine in evidenza
Il punto precedente stampa l’immagine in evidenza comprensiva del tag img, spesso nasce l’esigenza di estrapolare il link dall’immagine per poterlo gestire in maniera differente; lo si può fare con il seguente di codice:
if ( has_post_thumbnail()) {
$vett_immagine = wp_get_attachment_image_src( get_post_thumbnail_id(), 'large');
$link = $vett_immagine[0];
}
7 – Escludere pagine o post dal risultato di una ricerca
Utile questa funzione per mostrare solo post dal risultato di una ricerca, il tutto va inserito nel file function.php del tema:
function SearchFilter($query) {
if ($query->is_search) {
$query->set('cat','0,1');
}
return $query;
}
add_filter('pre_get_posts','SearchFilter');
8 – Immagini all’interno del feed Rss
Di default nel feed vengono stampati data, titolo e excerpt ma è possibile aggiungere anche l’immagine in evidenza andando ad inserire nel file functions.php del tema utilizzato questa funzione:
function diw_post_thumbnail_feeds($content) {
global $post;
if(has_post_thumbnail($post->ID)) {
$content = '' . get_the_post_thumbnail($post->ID) . '' . $content;
}
return $content;
}
add_filter('the_excerpt_rss', 'diw_post_thumbnail_feeds');
add_filter('the_content_feed', 'diw_post_thumbnail_feeds');
9 – Rimuovere aggiornamenti WordPress
Possono risultare invasivi gli aggiornamenti che compaiono all’interno del pannello di controllo per i ruoli diversi da quello di amministratore, detto fatto:
if ( !current_user_can('administrator') ) {
add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );
add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );
}
10 – Page excerpt
Se da pannello di controllo non visualizzate il riassunto all’interno delle pagine inserite in function.php del tema il seguente controllo:
function my_init() {
add_post_type_support('page', array('excerpt'));
}
add_action('init', 'my_init');
11 – Formato data in stile Facebook
E’ possibile modificare il formato della data di commento di un post o di una pagina con il formato ribattezzato “Facebook” (esempio: scritto 3 giorni fa).
echo human_time_diff(get_the_time('U'), current_time('timestamp')) . ' ago'; //per pagine
echo human_time_diff(get_comment_time('U'), current_time('timestamp')) . ' ago'; //per commenti
12 – Includere nuovi script e stili
Spesso quando si integrano script o css viene commesso l’errore di non sfruttare le funzioni che WordPress fornisce, tuttavia ci sarà un motivo per il quale bisogna obbedire a Wp; utilizzando, infatti, wp_enqueue_script e wp_enqueue_style verranno gestite all’interno della funzione wp_head(); tutte le priorità di inclusione evitando molto spesso conflitti tra librerie javascript sempre più utilizzate, ecco alcuni esempi:
In questo caso chiamo jQuery senza includere fisicamente il file, ci sono, infatti, un set di librerie (jQuery, Ajax, SWFObject, ecc…) che risiedono nativamente all’interno di WordPress e non c’è alcun bisogno di includerle nuovamente (motivo per il quale si utilizza wp_enqueue_script);
wp_enqueue_script( 'jquery' );
Troverete nel repository ufficiale di WordPress l’elenco delle librerie caricate di base già al momento dell’installazione del CMS evitando inclusioni doppie e conflitti, per tutto il resto c’è:
wp_enqueue_script( 'nome', 'percorso_file'); //per includere un file
wp_enqueue_style( 'nome', 'percorso_file'); //per includere un css
wp_enqueue_script( 'nome', 'percorso_file', array('jquery')); //per includere un file che utilizza elementi jquery
13 – Sovrascrivere uno script
Seguendo il discorso del punto 11 può capitare che ad esempio la versione jQuery di WordPress non sia la stessa che serve per il nostro progetto, niente paura…basta avvisare wordpress che stiamo utilizzando una versione jQuery diversa dalla sua utilizzando wp_deregister_script():
function your_init_yourscript() {
wp_deregister_script( 'jquery' );
wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js');
}
add_action('init', 'your_init_yourscript');
Abbiamo “deregistrato” il jQuery default di Wp e incluso uno a mano. Questo modo di procedere è abbastanza pulito, trasparente e soprattuto evita problemi di conflitto.
14 – Avviso via Email appena pubblicato un post
Inserire in functions.php del tema:
function email_members($post_ID) {
global $wpdb;
$usersarray = $wpdb->get_results("SELECT user_email FROM $wpdb->users;");
$users = implode(",", $usersarray);
mail($users, "Ciao! Abbiamo pubblicato un nuovo post, corri a visitarci.");
return $post_ID;
}
add_action('publish_post', 'email_members');
15 – Controllare che una pagina sia un figlio
Funzione utilissima che verifica se una pagina è figlia di un’altra:
function ma_is_child_of($page_id) {
global $post;
$is_child = false;
$parents = get_post_ancestors($post);
if ($parents) {
foreach ($parents as $one_parent_id) {
if ($one_parent_id == $page_id) {
$is_child = true;
break;
}
}
}
return $is_child;
};