Ecco tre modi per recuperare l’ID del blog corrente.
Tramite la globale $blog_id
1 | echo $blog_id; |
Tramite l’oggetto globale $current_blog
1 | echo $current_blog->blog_id; |
Tramite l’oggetto globale $wpdbg
1 | echo $wpdb->blogid; |
Ecco tre modi per recuperare l’ID del blog corrente.
Tramite la globale $blog_id
1 | echo $blog_id; |
Tramite l’oggetto globale $current_blog
1 | echo $current_blog->blog_id; |
Tramite l’oggetto globale $wpdbg
1 | echo $wpdb->blogid; |
Quando utilizziamo una UITableView in stile Grouped potremmo aver necessità di personalizzare la grafica dei titoli delle sezioni, come California o New York dell’esempio qui sotto.

Per farlo basta utilizzare il codice seguente, inserendolo nel delegato, cioè nella classe che risponde al protocollo UITableViewDelegate:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | // Restituisco una mia View personalizzata, in questo caso un oggetto // di tipo UILabel - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UILabel *label = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease]; label.font = [UIFont boldSystemFontOfSize:20]; label.textAlignment = UITextAlignmentCenter; label.shadowColor = [UIColor blackColor]; label.shadowOffset = CGSizeMake(1, 1); label.text = @"Sezione"; // Sostituire con un array come al solito label.textColor = [UIColor whiteColor]; label.backgroundColor = [UIColor clearColor]; label.opaque = NO; return label; } // Bisogna supportare anche questo message altrimenti non funziona - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 44; } |
È importante inserire anche heightForHeaderInSection, altrimenti non funziona.
Nella creazione della nostra UILabel, che volendo potrebbe essere anche un oggetto più complesso come una UIView o UIImageView, ho utilizzato per inizializzare il frame CGRectZero che corrisponde a CGRectMake(0,0,0,0).
Il MapKit framework fornisce moltissime funzionalità utili, tranne quella di restituire Longitudine e Latitudine a partire da un indirizzo. In Javascript, ad esempio, è possibile utilizzare il servizio di Geocoding fornito da Google e discusso in Google Maps: come ottenere Latitudine e Longitudine da un indirizzo. Su Apple iPhone, o iPad, è possibile tuttavia superare l’ostacolo utilizzando in modo diverso i servizi di Google. Nello specifico è possibile chiamare direttamente l’url:
1 | http://maps.google.com/maps/geo?q=[indirizzo]&output=csv |
Dove è [indirizzo] inserire la stringa con l’indirizzo che vogliamo trasformare in coordinate. L’output restituito è del tipo:
1 | 200,8,41.9128300,12.2241172 |
Il primo valore, 200, indica che tutto è andato bene (200 OK). Il secondo, 8, è il Google accuracy parameter (1-10). Gli ultimi due valori sono, finalmente, latitudine e longitudine. Vediamo adesso un possibile prototipo di un metodo da inserire nelle nostre applicazioni:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | - (CLLocationCoordinate2D)getLocationFromAddress:(NSString*)address { NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=csv", [address stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]]; NSString *locationString = [[[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:urlString]] autorelease]; NSArray *listItems = [locationString componentsSeparatedByString:@","]; //int zoom = 0; double latitude = 0.0; double longitude = 0.0; if([listItems count] >= 4 && [[listItems objectAtIndex:0] isEqualToString:@"200"]) { //zoom = [[listItems objectAtIndex:1] intValue]; latitude = [[listItems objectAtIndex:2] doubleValue]; longitude = [[listItems objectAtIndex:3] doubleValue]; } else { // Errore } CLLocationCoordinate2D location; location.latitude = latitude; location.longitude = longitude; return location; } |
La stringa restituita in locationString viene “splittata” tramite il metodo componentsSeparatedByString, alla stregua della funzione explode() del PHP per intenderci. Nell’esempio da me proposto ho inserito – ma commentato – il codice per recuperare anche il Google accuracy parameter, o fattore di scala di precisione, indicato con zoom.
Per completezza ho realizzato un piccolo applicativo di esempio con il quale è possibile provare il metodo sopra proposto; inserite un qualsiasi indirizzo e iPhone lo mostrerà sulla mappa.
Ringrazio il team di devAPP per l’ispirazione di questo articolo.
La nuova funzionalità delle miniature di WordPress, introdotta con la versione 2.9 e discussa in WordPress 2.9+: la nuova funzione post thumbnails, può essere automatizzata tramite un semplice script in PHP. Questo può risultare comodo quando “ci si scorda” di inserire le miniature su ogni articolo o se si vuole aggiornare il pregresso.
Non tutti sanno che è possibile personalizzare la visualizzazione delle categorie in modo rapidissimo sfruttando una proprietà del Category Templates. Normalmente siamo abituati a visualizzare le categorie sempre con il file archive.php.
Può essere utile, nello sviluppo di un Plugin e non solo, posizionare un pannello di informazioni, di riepilogo o quant’altro, direttamente nella Dashboard (Bacheca) di WordPress, come accade per i pannelli standard dello “Stato attuale”, “Commenti recenti” etc…
Wordpress permette di aggiungere nostri pannelli in modo semplice, sfruttando la funzione wp_add_dashboard_widget() :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // Prima di tutto aggiungiamo un Hook tramite 'wp_dashboard_setup' // per registrare la nostra funzione di creazione add_action('wp_dashboard_setup', 'example_add_dashboard_widgets' ); // Questa aggiunge fisicamente il pannello alla Dashboard function example_add_dashboard_widgets() { wp_add_dashboard_widget('example_dashboard_widget', 'Example Dashboard Widget', 'example_dashboard_widget_function'); } // Disegna il contenuto del pannello function example_dashboard_widget_function() { echo "Prova mio Widget sulla Bacheca"; } |
La funzione wp_add_dashboard_widget() ha la seguente synopsis:
1 2 3 4 5 6 7 8 9 10 | // // $widget_id - È un identificativo unico tipo slug. // Verrà usato anche come classe nello stile css // $widget_name - Nome del Widget visualizzato nella barra // $callback - Nome della funzone che mostrerà il conntenuto // $control_callback - (Opzionale) Nome della funzione usata per inviare // parametri tramite form // wp_add_dashboard_widget($widget_id, $widget_name, $callback, $control_callback = null) |
WordPress mette a disposizione un’utilissima funzione, wp_upload_dir() per ottenere molte informazioni sulla cartella uploads. Questa funzione restituisce un array così formato:
Con le ultime release di WordPress, dalla 2.9+, è stata introdotta una nuova funzionalità molto utile per gestire i thumbnails, ovvero le miniature. Tale funzionalità, tuttavia, dev’essere attivata nel tema e, precisamente, agendo sul file functions.php. Questa nuova caratteristica è utile in molti contesti e fornisce una strumento comodo e semplice sia per chi sviluppa un sito web utilizzando WordPress sia al cliente finale che dovrà poi gestire i contenuti.
Nelle versioni di WordPress precedenti alla 2.9, infatti, molti sviluppatori utilizzavano i campi personalizzati (custom fields) per fornire al cliente la possibilità di aggiungere un’immagine – esterna – al post. Soluzione che se dal punto di vista dello sviluppatore non era particolarmente gravosa, rendeve comunque l’editing dei post abbastanza scomodo, soprattutto se consideriamo che spesso e volentieri è il cliente finale a curare i contenuti.
La tecnica del Chroma Key, cioè la sostituzione di un determinato colore con un altro (o una diversa sorgente), è riesplosa nell’ultimo decennio con notevole prepotenza, grazie alla sempre più diffusa tecnologia presente nel cinema e nel trattamento di immagini digitali.
Commentare codice HTML è una prassi durante le prime fasi di sviluppo Web. Tuttavia il codice commentato rimane visibile all’interno della pagina, anche se viene ignorato dal browser. Selezionando “Visualizza Sorgente” o “Visualizza Codice” dal nostro browser, saremo sempre in grado di vederlo.
Ultimi Commenti
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...
Marco: Scusa lo spam.. ho notato che c’è un errore.. ecco la correzione [cc_objc] /** PrimaClasse.h **/ #import...
Marco: dimenticato.. in [cci]OptionViewController[/cci ] il [cci]@syntetize[/cci] del delegato l’ho messo
luigi: molto chiaro e semplice devo ammettere che anche scrivendo da un pà difficilmente uso delegati creati da...