Categoria ‘PHP’
Amministratore o sottoscrittore? Ecco un modo rapido per capirlo:
1 2 3 4 5 6 7 8 9
| global $user_ID;
//
$capabilities = get_usermeta ( $user_ID, 'wp_capabilities');
//
if ( is_array( $capabilities ) ) {
if( $capabilities['Administrator']==1 || $capabilities['administrator']==1 ) {
echo "Sei un amministratore";
}
} |
Continua...
Può risultare utile, a volte, “oscurare” alcuni menu dell’amministrazione di WordPress, soprattutto se si è sviluppato un sito/blog per un cliente e non si vuole permettere l’accesso a funzionalità particolarmente delicate. Esistono Plugin che svolgono questa già funzione ma, per avere un controllo personale e completo, vediamo come funziona in dettaglio questa caratteristica.
Come sempre sfruttiamo le utilissime Action messe a disposizione da WordPress, in questo caso admin_menu. Tramite la variabile globale $menu possiamo accedere alla lista dei menu dell’amministrazione. Possiamo individuare il menu da “eliminare” in due modi: tramite l’etichetta o tramite il link a cui punta (vedi parti commentati nell’esempio qui sotto). Nell’esempio proposto vengono “oscurate” le voci di menu Design, Impostazioni e Plugins:
1 2 3 4 5 6 7 8 9 10 11 12 13
| function remove_menu_item () {
global $menu;
// tramite label
$removes = array( 'Design', 'Impostazioni', 'Plugins' );
// tramite link
// $removes = array( 'themes.php', 'options-general.php', 'plugins.php' );
foreach( $removes as $todel )
foreach($menu as $key => $sm) if($sm[0] == $todel ) { unset( $menu[$key] ); break; }
// tramite link
// foreach($menu as $key => $sm) if($sm[2] == $todel ) { unset( $menu[$key] ); break; }
}
//
add_action ('admin_menu', 'remove_menu_item'); |
L’uso del link come chiave per la rimozione ($sm[2] nelle parti commentate nel codice qui sorpra), è utile quando non si ha certezza della lingua – localizzazione – con cui è stato installato WordPress. Con questa tecnica, tuttavia, il menu è rimosso solo a livello di interfaccia, quindi sarà possibile ancora accedere alla pagina tramite una link diretto.
Continua...
Converte una data dal formato yyyy-mm-dd hh:mm:ss a yyyymmddhhmmss. Utile per poter sfruttare le funzioni di ordinamento; tipo asort().
1 2 3 4 5 6
| /**
* Format from "yyyy-mm-dd hh:mm:ss" to "yyyymmddhhmmss"
*/
function plainDate ( $d ) {
return( preg_replace( '/(-|:|\040)/', '', $d ) );
} |
Continua...
Partendo dal post WordPress: come creare passo passo un proprio login, eseguita la procedura di login potrebbe essere utile indicare all’interno del nostro blog un link per effettuare la disconnessione, ovvero il logout. Non useremo anche in questo caso le procedure standard di WordPress, ma vedremo come eseguire il logout a basso livello. Prima di tutto dobbiamo capire se un utente è loggato o meno. Questo è possibile interrogando semplicemente la variabile $user_ID di WordPress. Ad esempio:
1 2 3
| if( $user_ID != '' ) { // oppure if( is_user_logged_in() ) {
// un utente risulta "loggato" ...
} |
Una volta che sappiamo che un utente è “loggato” nel sistema, possiamo inserire un semplice link ad una nostra pagina di logout. Creiamo quindi una pagina, ad esempio logout.php, e inserendo il seguende codice:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| /**
* Esegue il logout
*
* @author Giovambattista Fazioli
* @email g.fazioli@undolog.com
* @web http://www.undolog.com
*/
// Invoke WordPress bootstrap
@require_once('wp-config.php');
@require_once('wp-includes/pluggable.php');
// wp logout
wp_logout ();
// carico qualsiasi altra pagina
header( "Location: /" ); |
E sufficiente quindi “linkare” alla nostra pagina per fornire una procedure di logout:
1 2 3
| if( $user_ID != '' ) {
echo 'Esegui il <a href="logout.php">logout</a>';
} |
Continua...
In questo tutorial vedremo come creare una procedura di Login personale, utilizzando anche funzionalità Ajax tramite jQuery. Ci sono vari metodi per personalizzare il login di WordPress, ad esempio tramite l’uso di hook e filtri (add_action(), add_filter()). Noi qui useremo una procedura più a basso livello, anche se ci interfacceremo comunque al Kernel di WordPress. Inoltre faremo in modo di convalidare un utente tramite la dupla email/password.
Perchè realizzare un proprio login?
- In alcuni contesti può ritornare uitle avere il massimo controllo sulla pagina di login, per proporre un layout personalizzato ai nostri utenti registrati. Inoltre si può arricchire la pagina con informazioni utili, dal un logo al classico “Password dimenticata?”
- Per permettere l’accesso tramite l’email (come nell’esempio qui trattato) al posto dello
user_login standard di WordPress
- Per avere la possibilità di inserire un pannello di login nella sidebar del nostro Blog
- E infine, per avere uno scheletro – ed un’idea – per un ottimo Plugin
Ambiente
Nel nostro esempio/tutorial lavoreremo sulla root di WordPress all’interno di una cartella mylogin. Creiamo due file php all’interno di questa cartella: index.php e logon.php. Il primo conterrà l’interfaccia del nostro login, con tutte le funzioni Javascript/jQuery che ci servono. Il secondo file, logon.php, conterrà il codice per la validazione dell’utente. Creiamo poi una cartella css e dentro questa un file layout.css e una cartella images. All’interno della cartella images inseriremo un classico Ajax loader: createlo online su AjaxLoad.info. Alla fine dovreste avere:
Continua...
Il template standard di WordPress (come altri) normalmente preve un layout alternato per la lista dei commenti. Nel template standard di esempio è impostata una classe css alt, secondo la logica:
1 2 3 4 5
| // file comments.php
<li <?php echo $oddcomment; ?>id="comment-<?php comment_ID() ?>">
[...]
/* Changes every other comment to a different class */
$oddcomment = ( empty( $oddcomment ) ) ? 'class="alt" ' : ''; |
Questo fa si che nel tag li $oddcomment sia impostato una volta a vuoto ("") e una volta a class="alt". Una modifica utile potrebbe essere quella di introdurre un ulteriore classe quando è l’autore del blog a commentare un post:

Io, ad esempio, ho usato il seguente codice nel file comments.php:
1 2 3 4 5
| <?php
$authcomment = ($comment->user_id==3)? ' authcomment':'';
$classcomment = ( empty( $classcomment ) ) ? ( ($authcomment=='')? ' alt':'' ) : '';
?>
<li class=" <?=$classcomment?><?=$authcomment?>" id="comment- <?php comment_ID () ?>"> |
La riga $comment->user_id==3 può variare in base all’ID del vostro utente. Io, ad esempio, non uso l’amministratore per rispondere sul blog, ma ho un mio utente con ID=3. Normalmente l’ID dell’amministratore è 1, se usate questa utenza potete scrivere: $comment->user_id==1. In questo modo oltre ad avere l’alternanza di layout sui commenti lasciati dai visitatori, risulta immediatamente riconoscibile la risposta dell’autore del blog.
Continua...
Se non vogliamo che una funzione PHP emetta un qualsiasi errore o warning, basta inserire prima della chiamata alla funzione il carattere chiocciola – o at – (@):
1 2 3 4
| // invece di usare la forma canonica
$res = miaFunc();
// è possibile usare
$res = @miaFunc(); |
Continua...
Recentemente Cristiano Fino ha rilasciato un utile Plugin per WordPress in grado di aggiugere due link ad ogni commento di un post (forse ne avete uno simile installato, visto che nella directory di WordPress.org ne ho travati un paio, tuttavia essendo un software italiano sarebbe il caso di onorare l’ottimo lavoro fatto da Cristiano). Questi Link (reply & quote) permettono di rispondere e/o quotare l’autore di un commento, eseguendo quella noiosa operazione di inserire il carattere at (@) per indicare a chi ci si rivolge. In questo tutorial voglio illustrare – per gli utenti medio-esperti – il modo di aggiugere queste due funzionalità “a mano”, senza ricorrere all’istallazione di nessun Plugin. Inoltre sfrutterò le capacità di jQuery per la parte in Javascript. La tecnica che espongo è la medesima che ho usato per introdurre questa funzionalità in questo blog.
Nota: l’uso di un plugin è la miglior soluzione per chi tende a modificare spesso il proprio template WordPress o, al limite, ha in previsione di farlo. Questo tutorial vuole solo mostrare come eseguire interventi mirati all’interno del codice WordPress ed è dedicato ai più curiosi.
Modifica del file comments.php
La prima modifica che apportiamo è quella di inserire i link “reply” e “quote” all’interno di ogni commento. Per fare questo editiamo il file comments.php situato nella cartella del nostro tema. Questo file contiene tutte le istruzioni che consentono di visualizzare i commenti alla fine di un post. La sezione che ci interessa (che può variare leggermente da tema a tema) è il loop di creazione dei vari commenti, riconoscibile da:
Continua...
In PHP è possibile usare una forma abbreviata, o contratta, per visualizzare variabili o ritorni di funzioni:
1 2 3 4 5 6 7 8
| // al posto di
<?php echo $miavar ?>
// è possibile scrivere
<?=$miavar?>
// al posto di
<?php echo miaFunc() ?>
// è possibile scrivere
<?=miaFunc()?> |
Continua...
Delimita una porzione di testo per il numero di “parole”:
1 2 3 4 5 6 7 8 9 10 11
| /**
* String word cut
*
* @private
*/
function wordCut ($c, $l){
$c= explode(' ',$c);
for($i=0; $i<$l; $i++) $r[$i] = $c[$i];
$r= implode(' ', $r).'...';
return $r;
} |
Continua...
Ultimi Commenti
Giovambattista Fazioli: @Nik: Sono contento! In bocca al lupo dunque!!
Nik: Lunedì ho l’esame di informatica su java, grazie mi sei stato utilissimo, il libro che ho era poco chiaro...
Marco: Ti ringrazio moltissimo, mi hai illuminato
ho risolto impostando [cc_objc] //OptionViewController.m -...
Giovambattista Fazioli: @Marco: Ti consiglio un approccio credo più corretto. Se hai eseguito il subclass del tab...
luigi: molto chiaro e semplice devo ammettere che anche scrivendo da un pà difficilmente uso delegati creati da...