Tag: Wordpress
Come eliminare errore feed in WordPress
by gurucoder on Jun.04, 2010, under Windows
Negli ultimi giorni dopo aver installato alcuni nuovi plugin sul blog mi sono accorto di un grosso problema… i feed non risultavano più accessibili visualizzando questo errore:
Errore interpretazione XML: la dichiarazione XML o testuale non è all’inizio di un’entità
All’ inizio credevo che il problema derivasse da qualche mia modifica al codice sorgente del tema in uso, ma poi dopo un pò di ricerche ecco la soluzione… uno dei plugin installati potrebbe aver aggiunto uno o più spazi in testa alla pagina dei feed determinando un errore in fase di parsing dell’ rss.
E’ stato dal blog di Black Cat che ho risolto il mio problema: utilizzare la funzione ob_clean()!
Quindi:
Accedete a file: wp-includes/feed-rss2.php, ed inserite prima di qualsiasi altra cosa (ma ovviamente dopo <?php), la chiamata alla funzione: ob_clean(). In questo modo con tutta probabilità i vostri feed sarannno di nuovo accessibili senza problemi!
Come caricare file RAR su WordPress
by gurucoder on Jan.03, 2010, under PHP, Wordpress
Da quando sto utilizzando WordPress in modo self-hosted, quindi su un mio dominio , ho riscontrato una limitazione relativa all’ impossibilità di effettuare l’ upload sul mio blog di alcuni tipi di file . Dopo un pò di ricerche sono arrivato alla soluzione cercata.
Il modo per riuscire ad avere l’autorizzazione ad effettuare l’upload di un certo tipo di file sul blog , dipende dalla funzione get_allowed_mime_types() che si trova nella cartella in wp-includes del file functions.php. La funzione presenta un array in cui sono pesenti tutti i tipi di file che è possibile caricare sul blog con la relativa tipologia MIME.
Di default WordPress non permette ad esempio, l’upload di archivi RAR, presentando l’errore: “ Il tipo di file non rientra nei limiti imposti dai criteri di sicurezza. Provane un altro. ” . Per poter effettuare questa operazione basta modificare tale funzione aggiungendo questa entry all’ array, circa alla riga numero 2319 :
'rar' => 'application/octet-stream',
Dopo avere effettuato il salvataggio del file e l’ upload sul server ecco il risultato:

Infine per i meno smaliziati ecco il file modificato functions.php che permette anche l’ upload di file .php sul blog.
Creare Widget per visualizzare i Post Correlati in WordPress
by gurucoder on Jan.03, 2010, under Wordpress
Questo post ha l’obbiettivo di illustrare come implementare un Widget WordPress per visualizzare sulla sidebar, gli argomenti correlati ad un certo post che si sta visualizzando. Prima di entrare nel dettaglio, se siete alle prime armi con la realizzazione di Widgets, vi consiglio di dare uno sguardo al post: “Creare il primo Widget per WordPress“.
Vi consiglio prima di tutto di scaricare il widget tramite Questo Link e di installarlo per testarne la funzionalità.
L’ idea alla base è quella di modificare la query di selezione dei post da visualizzare, in base alle impostazioni inserite lato amministrazione.
Analiziamo alcuni rami di codice estratti dalla funzione “widget()”.
...
global $post;
$category = get_the_category($post->ID);
$cat = $category[0]->cat_ID;
$numPosts = $instance['numPosts'];
$searchCategory = isset( $instance['searchCategory']) ? $instance['searchCategory'] : false;
$orderRandom = isset( $instance['orderRandom']) ? $instance['orderRandom'] : false;
$query1 = "numberposts=$numPosts";
if( $searchCategory ){
$query = $query1 . '&category=' . $cat .'&exclude=' . $post->ID ;
}if( $orderRandom ){
$queryRandom = $query1 . '&orderby=rand';
}
...
Come si può osservare da questo frammento di codice, la query di selezione è costituita da una parte fissa che imposta il numro massimo di post da visualizzare ($query1) e da una parte variabile che dipende dai valori delle variabili $instance['orderRandom'] e $instance['searchCategory'] che sono i valori impostati lato amministrazione. Tali variabili si riferiscono rispettivamente ad effettuare una query in base alla categoria del post corrente oppure effettuare una query random sui vari post disponibili. Chiaramente i due criteri possono coesistere.
Il prossimo frammento di codice si riferisce alla visualizzazione del risultato della query scelta in base ai criteri di selezione precedenti.
...
if ( is_single() and $searchCategory ) {
$myposts = get_posts($query);?>
<? foreach($myposts as $post) :
setup_postdata($post); ?>
<a href="<? echo the_permalink(); ?>">
<? echo the_title(); ?></a>
<? endforeach; ?>
<? }
if( $orderRandom ) {
$myposts = get_posts($queryRandom);?>
<? foreach($myposts as $post) :
setup_postdata($post); ?>
<a href="<? echo the_permalink(); ?>">
<? echo the_title(); ?></a>
<? endforeach; ?>
<? }
...
Per default quindi il widget permetterà di visualizzare un certo numero di post che appartengano alla stessa categoria del post corrente. Chiaramente nella lista non apparirà il link al post viualizzato perchè sarebbe ridondante. Il filtraggio dei post da visualizzare viene effettuato nell’ impostazione della query:
$query = $query1 . '&category=' . $cat .'&exclude=' . $post->ID ;
in cui il parametro category viene impostato alla categoria del post visualizzato, il parametro exclude viene impostato invece all’ identificativo del post correntemente visualizzato in modo da escluderlo dal risultato della query.
Infine, se nel form di amministrazione del widget viene selezionata l’opzione “Random Search” , la variabile $instance['orderRandom'] verrà valorizzata a true, coò comporterà che anche la variabile $orderRandom verrà impostata a true tramite la chiamata della funzione isset( $instance['orderRandom']) ? $instance['orderRandom'] : false;. Questo comporta l’ingresso nel ramo if( $orderRandom ) .... { e quindi la visualizzazione dei post a random sulla sidebar. Il numero di post da visualizzare viene impostata dalla variabile $numPosts.
Spero che sia tutto chiaro se ci sono problemi o bug non esitate a contattarmi!
Yourls , Inserire Url Shortener in WordPress
by gurucoder on Sep.26, 2009, under News, Wordpress
Navigando per la rete si può osservare il continuo dilagare dei cosidetti Shortener Url, si tratta di URL a pagine pubblicate in internet con una caretteristica molto particolare… sono molto più brevi delle reali URL relative alle risorse a cui puntano. Tale abbassamento della lunghezza , talvolta può anche superare un fattore del 30%. Ad esempio, mentre la URL reale a questo post è: http://www.gurucoder.org/inserire-un-url-shortener-in-wordpress ; la sua versione ridotta sarà: http://is.gd/3HDhF . Con un evidente risparmio nel numero di caratteri. Uno dei vantaggi nell’ utilizzo di servizi che offrono un conversione e compattazione delle URL ,risiede sicuramente nella promozione di post su Twitter , in cui il numrero di caratteri disponibili è molto limitato per singolo tweet.
In pochissimo tempo il numero di servizi che offrono un “accorciamento delle URL” è aumentato esponenzilamente ,tra i più famosi spiccano: TinyURL, tr.im, is.gd e bit.ly
Vi segnalo un utile plugin per WordPress chiamato YOURLS . In effetti , oltre al plugin che permette di ottenere lo shortener Url da uno dei servizi che ho elencato prima, Yourls dà anche la possibilità di prelevarlo da una propria istanza di YOURLS che viene messa in esecuzione sul proprio server. Di fatto quindi, saremo noi stessi a creare la versione accorciata delle URL a nostro piacimento. Il plugin è scaricabile da questo indirizzo.
Dopo la fase di installazione e l’attivazione del plugin, basterà andare nella sezione di impostazioni per scegliere quale servizio utilizzare per la conversione delle URL. Da notare inoltre la possibilità di “twittare” il nostro post su Twitter direttamente dalla pagina di creazione del post in WordPress inserendo proprio lo shortener url nel tweet, come presentato in figura.
Inviare email all’ interno di una pagina WordPress
by gurucoder on Sep.26, 2009, under PHP, Wordpress
Una delle pagine che non può mancare in un qualunque sito che si rispetti è sicuramente la pagina dei contatti. Si tratta di una pagina in cui è presente un form di inoltro di una mail all’ amministratore del sito con l’intento di mandargli un messaggio o una segnalazione di qualunque genere.
A differenza di altri linguaggi di programmazione in cui l’ invio di mail comporta il dover scrivere diverse righe di codice , in PHP esiste una funzione ad hoc per per raggiungere lo scopo con il minimo sforzo : mail() .
Lo scenario di riferimento si compone di due pagine php: la prima per la raccolta dei dati tramite il form di invio e la seconda che riceva tali dati ed effettui il vero e proprio inoltro .
Lo scopo di questo post è quello di integrare una funzionalità del genere all’ interno di un sito basato su piattaforma WordPress, anche se di fatto la soluzione è valida anche per un normale sito in PHP.
Passiamo quindi a creare la pagina contact_page.php , per la raccolta dei dati. Al suo interno inseriamo :
<?php
/*
Template Name: Template Contact
*/
?>
<form method="post" id="mail_form" action="<?php bloginfo('template_url'); ?>/mailSender.php" >
<div>Nome:</div><div><input style="margin:3px;" type="text" name="name" size="80"/> </div>
<div>Email:</div><div><input style="margin:3px;" type="text" name="email" size="80"/> </div>
<div>Argomento:</div><div><input style="margin:3px;" type="text" name="regarding" size="80" /> </div>
<div>Messaggio</div><div style="font-family:'Lucida Sans Unicode', 'Lucida Grande', sans-serif">
<textarea cols="60" rows="10" style="margin:3px;" type="text" name="message" ></textarea>
</div>
<div><input type="submit" value="Invia" /></div>
</form>
La parte iniziale in cui appare Template Name , è necessaria per comunicare a WordPress che si tratta di una pagina di tipo Template, che viene poi applicato alla pagina WordPress che creeremo succcessivamente. Come si può notare l’attributo “action” del tag FORM ha come valore l’ indirizzo della pagina mailSender.php che è proprio la seconda pagina che serve al nostro scopo.
mailSender.php appare in questo modo:
<?
$name=$_REQUEST['name'];
$email=$_REQUEST['email'];
$regarding=$_REQUEST['regarding'];
$message=$_REQUEST['message'];
echo $name . $email . $regarding . $message ;
$oggetto= "Segnalazione dal tuo sito";
$messaggio="L'utente ".$name."(".$email.") ti ha inoltrato questo messaggio:\n ".$message . "\n\n Riferendosi a:\n ".$regarding;
if ( mail("IL TUO INDIRIZZO MAIL", $oggetto, $messaggio))
header( 'Location: http://www.gurucoder.org' );
else echo 'Errore in fase di inoltro della mail... :(';
?>
Ipotiziamo di voler creare una nuova pagina “contact” sul sito WordPress applicando il template appena creato. Quindi basta entrare in amministrazione e scegliere Pagine. A questo punto cliccando su “Aggiungi nuova” , si aprirà un form in cui inserire il nome della pagina ( contact per l’appunto). Sulla destra poi si può notare un menù a tendina relativo a “Template di Pagina”, basterà selezionare il template: Template Contact precedentemente creato!
Bene, a questo punto accedendo alla pagina wordpress “contact” vi apparirà il form con funzionalità di inoltro mail desiderato! Eccovi il link ai due sorgenti impacchettati in un archivio.
Scompattate il file ed inserite i sorgenti nella cartella del vostro tema wordpress.




