10+ utili “hacks” per il tuo blog WordPress

18 Luglio 2011Scritto da mario13

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

Scritto da mario

Agile web e mobile developer, attraverso il blog mette in campo l'esperienza acquisita quotidianamente sul mondo del lavoro.

13 comments

  • Silvia Paldini

    18 Luglio 2011 at 10:14

    complimenti per il papiro!!! sicuramente questa guida è rivolta a programmatori o simili ma sapreste indicarmi un plugin di avviso via mail quando il post viene pubblicato? in questa maniera qui non ci arrivo proprio :/

    Reply

  • Pierpaolo Cerna

    18 Luglio 2011 at 20:07

    Mario, i tuoi post sono sempre più utili e completi. Grazie!

    Reply

  • francesco

    18 Luglio 2011 at 22:34

    e cosa vuoi di più dalla vita? 😀

    Reply

  • gWeb

    19 Luglio 2011 at 14:40

    Sto provando a inserire la data formato facebook ma non riesco. Ho fatto una funzione e ho inserito tutto all’interno del file functions.php…qualche idea?

    Reply

    • Mario Concina

      20 Luglio 2011 at 13:47

      dovresti inserire la riga di codice nel file dove utilizzi il template di commento.

      Reply

  • Consigli per dimagrire

    31 Agosto 2011 at 21:10

    Davvero molto utili, soprattutto quello per escludere la pagine dai risultati di ricerca.
    Sto cercando un modo per disabilitare del tutto il feed RSS, non voglio cioè che sia accessibile in alcun modo. Conosci se c’è un modo? Tramite le opzioni sembra impossibile farlo

    Reply

    • pierpaolo cerna

      14 Ottobre 2011 at 11:26

      Elimina il file feed.php dalla root!

      Reply

    • Consigli per dimagrire

      14 Ottobre 2011 at 17:41

      Non ci crederai, ma anche cancellando il file wp-feed.php dalla root di WP il feed si visualizza lo stesso!

      Reply

    • Mario Concina

      14 Ottobre 2011 at 17:45

      Prova con questa filtro qui da inserire in “functions.php” del tema corrente:

      function fb_disable_feed() {
      	wp_die( __('Feed RSS non presente') );
      }
      
      add_action('do_feed', 'fb_disable_feed', 1);
      add_action('do_feed_rdf', 'fb_disable_feed', 1);
      add_action('do_feed_rss', 'fb_disable_feed', 1);
      add_action('do_feed_rss2', 'fb_disable_feed', 1);
      add_action('do_feed_atom', 'fb_disable_feed', 1);
      

      WP genera 5 tipi di feed RSS e per ogni tipo c’è la possibilità di disabilitarlo tramite “hook”. In questo caso tutti e 5.

      Reply

  • Pingback: Raccolta di articoli della settimana 2/10/2011 | Saverio Gravagnola

  • ninì

    29 Novembre 2011 at 19:42

    ciao ho un problema con le tax query e la paginazione, ho praticamente utilizzato il tuo pezzo di codice che mostri nell’esempio 1 (“Paginazione con tassonomie e termini”) ma continua a non funzionare.

    ps: utilizzo wp page navi come plugin per la paginazione

    Reply

    • Mario Concina

      29 Novembre 2011 at 21:45

      Se utilizzi wp_pagenavi dovrebbe accettare come parametri array(‘query’ => $query).

      Reply

  • Andrea s

    6 Novembre 2014 at 12:29

    ciao, io ho un problema opposto, dovrei disabilitare la funzione che dice al template di usare le immagini in evidenza in favore della prima immagine caricata su ogni post, come posso fare?

    Reply

Lascia un commento

Your email address will not be published. Required fields are marked *

https://www.fullstacksas.it/wp-content/uploads/2021/11/FULLSTACK-LOGO-MINI-150x131.png

Via Vito Rosa, 7
70127 Bari – IT
P.iva – 08087100726

Gli attrezzi del mestiere

Full Stack Sas – p.iva 08087100726 – Rea n. BA – 603324

Copyright 2019. Bold Themes. All rights reserved.

bt_bb_section_top_section_coverage_image