10+ utili “hacks” per il tuo blog WordPress

10+ utili “hacks” per il tuo blog WordPress

6360
13
CONDIVIDI

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;
};