-->

Tag: PHP

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!

Leave a Comment :, , more...

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.

2 Comments :, more...

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!

2 Comments :, more...

Inserire il proprio stato Twitter in WordPress

by gurucoder on Sep.28, 2009, under PHP, Wordpress

Una funzionalità che va molto di moda nei siti attuali, è la visualzzazione dello stato del proprio account Twitter. Esistono molti modi per realizzarlo, molti dei quali fanno uso di un numero non indifferente di funzioni in php, lo script che vi pesento invece, si basa su un idea molto semplice e di altrettanto semplice realizzazione: estrare l’informazione del proprio stato da un feed rss pubblicato direttamente di Twitter.
Twitter infatti permette l’ estrazione della stato di un certo utente tramite l’ url:

http://search.twitter.com/search.atom?q=from:" . $username . "&rpp=1

dove la variabile $username chiaramente contiene il nome dell’ utente twitter di cui si vuole visualizzare l’ ultimo tweet pubblicato.
Di seguito vi presento il codice che serve al nostro scopo:

include_once(ABSPATH.WPINC.'/rss.php');
$username = "superbre"; // Your twitter username.
$tweet = fetch_rss("http://search.twitter.com/search.atom?q=from:" . $username . "&rpp=1");
$res2 =  $tweet->items[0]['atom_content'];

Osservando il codice, si osserva la chiamata alla funzione fetch_rss(). Si tratta del parser RSS utilizzato da WordPress per default. Unica pecca di questo metodo è che tale parser effettua il controllo dell’ rss ogni ora, quindi se avete necessità che l’aggiornamento avvenga più di recente, oppure se siete soliti aggiornarlo molte volte in un ‘ ora, purtoppo questo semplicissimo metodo non fa per voi.
E’ comunque un difetto irrilevante se paragonato all’ estrema semplicità della soluzione. Inutile dire che è anche il metodo che ho utilizzato io per visualizzare il mio stato di twitter nel footer di questo tema.

1 Comment :, more...

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.

2 Comments :, 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!

Puoi trovarmi su Twitter come @superbre