Very short snippet: Wordpress, separare le categorie in due colonne

Mercoledì 19 Novembre, 2008

Prendendo spunto da Wordpress Hack #2 - Separare le categorie in colonne nella sidebar può tornare utile "spezzare" in due colonne la lista delle categorie di Wordpress. Se la sequenza che vogliamo ottenere è da sinistra a destra, cioè cat1 | cat2 (a capo) cat3 | cat4 (a capo) etc... non è necessario usare un codice PHP, ma basta giocare con gli stili impostando il tag li a float:left e "chiudendo" con l'opportuna width il tag ul, in modo a mandare "a capo" il successivo li. Nei casi invece dove il css non arriva, ad esempio nella sequenza cat1 | cat3 (a capo) cat2 | cat4, possiamo usare questo semplice codice:

PHP:
  1. $cats       = explode("<br />",wp_list_categories('title_li=&echo=0&depth=1&style=none'));
  2. $middle     = round( (sizeof($cats)-1)/2 );
  3. $cats_left  = array_slice( $cats, 0, $middle );
  4. $cats_right = array_slice( $cats, $middle, -1 );
  5. echo '<ul class="left"><li>'.implode( '</li><li>', $cats_left ).'</li></ul>'.
  6.      '<ul class="right"><li>'.implode( '</li><li>', $cats_right ).'</li></ul>';

Post correlati

Very short snippet: Wordpress administrator?

Lunedì 3 Novembre, 2008

Amministratore o sottoscrittore? Ecco un modo rapido per capirlo:

PHP:
  1. global $user_ID;
  2. //
  3. $capabilities = get_usermeta( $user_ID, 'wp_capabilities');
  4. //
  5. if ( is_array( $capabilities ) ) {
  6.     if( $capabilities['Administrator']==1 || $capabilities['administrator']==1 ) {
  7.         echo "Sei un amministratore";
  8.     }
  9. }

Oppure, in forma "contratta":

PHP:
  1. global $user_ID;
  2. //
  3. $capabilities = get_usermeta( $user_ID, 'wp_capabilities');
  4. // $admin è true se amministratore
  5. $admin = ( $capabilities['Administrator']==1 || $capabilities['administrator']==1 );

Si possono ovviamente controllare tutti i livelli messi a disposizione da Wordpress, come subscriber ad esempio.

Post correlati

Very short snippet: PHP plain date

Venerdì 31 Ottobre, 2008

Converte una data dal formato yyyy-mm-dd hh:mm:ss a yyyymmddhhmmss. Utile per poter sfruttare le funzioni di ordinamento; tipo asort().

PHP:
  1. /**
  2. * Format from "yyyy-mm-dd hh:mm:ss" to "yyyymmddhhmmss"
  3. */
  4. function plainDate( $d ) {
  5.     return( preg_replace( '/(-|:|\040)/', '', $d ) );
  6. }

Sempre meglio di questo:

PHP:
  1. function plainDate( $d ) {
  2.     return( str_replace( ' ', '', str_replace('-','', str_replace(':', '', $d) ) ) );
  3. }

O addirittura di questo:

PHP:
  1. function plainDate( $d ) {
  2.     $pd = explode(' ', $d);
  3.     $dd = explode('-', $pd[0]);
  4.     $hp = explode(':', $pd[1]);
  5.     return( $dd[0].$dd[1].$dd[2].$hp[0].$hp[1].$hp[2] );
  6. }

Post correlati

Varietà di coding e di coding

Martedì 14 Ottobre, 2008

Qualcuno sostiene che la programmazione è un arte e, in ultima analisi, non posso che essere d'accordo soprattutto quando si scovano soluzioni estremamente diverse per un medesimo problema. Per capire quanto sia vero questo, ecco come un'identica necessità nel medisimo linguaggio (Javascript) può essere risolta con approcci assolutamente diversi ed originali.

Left Pad zero

Un numero, ma il discorso è valido anche per una qualsiasi stringa, come 123 può essere riempito a sinistra - per pareggiarlo - con un certo numero di zeri, ad esempio: 00123. Questa necessità si presenta in varie occasioni e risulta utile per incolonnare - o comunque mostrare - un numero in maniera pulita, indicandone implicitamente il suo valore massimo. Nei videogame, ad esempio, il classico punteggio (lo score) viene spesso indicato con 001234, indicando che al massimo si arriverà a 999999. Ecco come lo stesso problema è stato risolto da vari sviluppatori:

JavaScript:
  1. /**
  2. * Left Pad String
  3. *
  4. * @from          http://snipplr.com/view/8423/left-pad-string/
  5. * @author-web    http://www.mechanicmatt.com/
  6. *
  7. * @param         num         - Striga da riempire
  8. * @param         totalChars  - Numero totale di caratteri, comprensivo degli "zeri"
  9. * @param         padWidth    - Carattere usato per riempire, default "0"
  10. */
  11. function leadingZeros(num, totalChars, padWith) {
  12.     num = num + "";
  13.     padWith = (padWith) ? padWith : "0";
  14.     if (num.length <totalChars) {
  15.         while (num.length <totalChars) {
  16.             num = padWith + num;
  17.         }
  18.     } else {}
  19.  
  20.     if (num.length> totalChars) { //if padWith was a multiple character string and num was overpadded
  21.         num = num.substring((num.length - totalChars), totalChars);
  22.     } else {}
  23.  
  24.     return num;
  25. }
  26. alert(leadingZeros("asdf", 10, "0"));

Questa soluzione è estremamente articolata, tuttavia permette di aggiungere un numero indefinito di 0 al numero num scegliendo anche il tipo di carattere da usare tramite padWidth, invece del default 0.
Decisamente originale, invece, questa soluzione:

JavaScript:
  1. /**
  2. * string_pad
  3. *
  4. * @from        http://snipplr.com/view/700/stringpad/
  5. * @author      http://d.hatena.ne.jp/brazil/20060721/1153489937
  6. *
  7. * @param         str         - Striga da riempire
  8. * @param         len         - Numero totale di caratteri, comprensivo degli "zeri"
  9. * @param         ch          - Carattere usato per riempire
  10. */
  11. function pad(str, len, ch){return new Array(len-(''+str).length+1).join(ch) + str}
  12.  
  13. alert(pad(56, 4, '0')); // 0056

Stesso risultato, con un approccio completamente diverso. Anche in questo caso abbiamo la possibilità di decidere il numero di caratteri padding tramite il parametro len e il tipo di carattere da usare tramite ch. Manca però l'uso del default previsto nella precedente funzione.
Quella che uso io, invece...:

JavaScript:
  1. /**
  2. * string_pad
  3. *
  4. * @author      Giovambattista Fazioli
  5. * @web         http://www.undolog.com
  6. *
  7. * @param         s           - Striga da riempire
  8. * @param         l           - Stringa che indica sia il carattere che la lunghezza
  9. *                              ad esempio "0000" = carattere "0" lunghezza 4
  10. */
  11. function padding(s,l) { return( l.substr(0, (l.length-s.length) )+s ); }
  12. alert( padding('123','0000') );

Se avete altre soluzioni interessanti non esitate a commentare :D

Post correlati

Snipplr code 2.0: frammenti (snipp) di codice utile

Sabato 26 Aprile, 2008

Snipplr Era da tempo che volevo segnalare questo utilissimo servizio dedicato al mondo della programmazione. Snipplr (code 2.0) è un vero e proprio aggregatore o repository di frammenti di codice utili. È possibile registrarsi gratuitamente ed inviare le proprio porzioni di codice e, soprattutto, usufruire dei tantissimi snipp già presenti su sito. I linguaggi trattati sono tantissimi (Actionscript, ASP, C#, MatLab, PHP, Rails, SVN, etc...), tutti ben ordinati e catalogati. È possibile anche installare un comodo plugin per Wordpress in grado di visualizzare sul nostro blog un snipp-code tramite il suo id univoco.

Post correlati