-->

Wordpress

Modificare la funzione the_excerpt() di WordPress

by on Aug.25, 2009, under PHP, Wordpress

400_F_3474972_YLikOhrAx7dI66lQE2CUnxcGZNfpUILa funzione the_excerpt() viene utilizzata da WordPress per visualizzare un sommario degli articoli, solitamente viene richiamata nella visualizzazione degli archivi o delle categorie di un blog. Ma ipotizzando che si voglia visualizzare i sommari degli articoli direttamente nella pagina iniziale, i limiti di tale funzione si notano subito.

Prima di tutto the_excerpt() ignora del tutto ogni tipo di tag HTML , ciò comporta che ogni formattazione o immagine presente nel testo dell’ articolo originale non verrà visualizzato nel sommario, a meno che tale sommario non venga scritto manualmente dall’autore. Inoltre il numero massimo di parole presenti nel sommario è fissato a 55 , numero che potrebbe essere non sufficiente per ogni tipo di blog.

L’idea è di modificare the_excerpt() per renderla più adatta ai nostri scopi. Tutte le modifiche che verranno apportate al codice, si riferiscono all’ interno di un determinato tema senza modificare il core di WordPress.

Identificare la funzione

wp_trim_excerpt()è presente nel file wp-includes/formatting.php . Ricordando che non stiamo modificando il core, bisogna copiare e salvare l’intero corpo della funzione altrove. Apriamo il file functions.php del nostro tema utilizzato ed incolliamo la funzione. E’ importante modificare il nome della funzione in modo che il nome sia univoco , quindi modifichiamo il nome della funzione in :

function improved_trim_excerpt($text) {

Ecco come appare la funzione modificata:

function improved_trim_excerpt($text) {
	global $post;
	if ( '' == $text ) {
		$text = get_the_content('');
		$text = apply_filters('the_content', $text);
		$text = str_replace(']]>', ']]>', $text);
		$text = strip_tags($text, '<p><img>');
		$excerpt_length = 80;
		$words = explode(' ', $text, $excerpt_length + 1);
		if (count($words)> $excerpt_length) {
			array_pop($words);
			array_push($words, '[...]');
			$text = implode(' ', $words);
		}
	}
	return $text;

Incremento del numero massimo di parole

Basta modificare il valore numerico di questa linea di codice nel corpo della funzione:

$excerpt_length = 80;

In questo modo abbiamo incrementato tale valore a 80 parole massimo.

Includere tag HTML

L’idea è di includere tag come “p” per la formattazione e “img” per visualizzare le immagini . La linea di codice da modificare è la seguente:

$text = strip_tags($text, '<p><img>');

E’ possibile inserire ogni tipo di tag HTML nell’ elenco dei tag nella chiamata della funizione strip_tags().

L’ultima operazione da fare è di dire a WordPress di utilizzare questa funzione modificata e non quella originale del core, anche in questo caso il compito è semplice basta inserire nella parte finale del file functions.php del nostro tema le seguenti righe di codice:

remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'improved_trim_excerpt');

Il gioco è fatto! Adesso siamo pronti per i nostri sommari!

Leave a Comment :, more...

Gestire utenti in WordPress tramite PHP

by on Aug.24, 2009, under PHP, Wordpress

Il modo più semplice per gestire gli utenti su piattaforma WordPress agendo direttamente sul codice PHP è il seguente:

global $userdata;
get_currentuserinfo();
$username = $userdata->user_login;

in questo modo nella variabile $userdata sarà presente lo username dell’ utente connesso in quel momento.

Per conoscere invece, le informazioni relative ad un determinato utente identificato tramite il proprio ID,  bisogna richiamare la funzione:

 $userdata = get_userdata( $userID );

In realtà, in entrambi i casi nell’ array $userdata sono presenti diverse informazioni come:

Nome:  $userdata->first_name;
Cognome:  $userdata->last_name;
Livello:  $userdata->user_level;
ID:  $userdata->ID;
Leave a Comment :, more...

Cerchi qualcosa?

Usa questo form per cercare argomenti in questo blog:

Non riesci a trovare quello che cerchi? Lascia un commento in un post oppure contattami per risolvere il problema!

@WindowsAzure @MichaelCollier really great post!
Puoi trovarmi su Twitter come @superbre