Quando di aggiungono campi aggiuntivi a pagine e post, oppure ai propri Custom Post Type (CTP), bisogna registrare una action per memorizzare questi nuovi dati. L’implementazione di questa procedura è sostanzialmente sempre lo stessa, cambiano solo i campi e le modalità di salvataggio; i dati extra possono risiedere nei ‘custom field’, ovvero la tabella post meta, oppure su una o più tabelle personali.
Articoli con Tag ‘add_action()’
WordPress snippet: la action save_post
WordPress snippet: is_page() su Custom Post Type
Se avete registrato un vostro Custom Post Type (CPT), soprattutto se di tipo ‘pagina’, vi potrebbe servire di determinare se si sta visualizzando quella determinata pagina, il ‘single’ per intenderci. In questo caso è inutile provare con is_page() o is_page_template(). La soluzione pulita è la seguente:
1 2 3 4 5 6 | if (is_singular('cpt_key')) { global $post; if ($post->post_name == 'slug_pagina') { // Il tuo codice qui... tipo add_action(), wp_enqueue_scripts(), etc... } } |
WordPress snippet: aggiungere stili e script ai Custom Post Type
Ora che WordPress permette di creare dei tipi post personalizzati (CPT), diventa utile poter aggiungere dei nostri stili e dei nostri script quando si visualizzano o si modificano i nostri post. Il modo migliore per farlo, compatibile con la release 3.3 è il seguente:
1 2 3 4 5 6 7 | add_action('admin_enqueue_scripts', function() { global $typenow; if ($typenow == 'id_custom_post') { wp_enqueue_style('key_style', 'css/customstyle.css'); wp_enqueue_script('key_script', 'js/customscript.js'); } }); |
WordPress Delete Post
WordPress permette di intercettare quando un post – anche di tipo custom – sta per essere eliminato. Esistono due hook action che possono essere utilizzate: delete_post e deleted_post. In prima analisi la prima dovrebbe essere riconducibile ad un “sta per essere eliminato” il post, anche se così non sembra essere, o meglio.
Very short trick: WordPress, personalizzare il Meta Box delle miniature
In riferimento a questo commento: il MetaBox delle miniature normalmente ha il titolo impostato a “Immagine in evidenza”.
10 utili snippet per WordPress
Con l’uscita di WordPress 3.0 molte cose cambieranno per noi sviluppatori. Gli aggiornamente di questa major release sono tanti e davvero utili a chi sviluppa con questo CMS ormai davvero completo. Potremmo dire che si chiude un’era e se ne apre una nuova e densa di possibilià. Rendo quindi omaggio alle precedenti versioni con una serie di utili snippet alcuni ancora validissimi con la nuova release.
WordPress: aggiungere un pannello nella bacheca
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: estendere le informazioni utente
Le informazioni su un utente, o autore, di un blog WordPress possono essere estese in modo semplice. Potrebbe ad esempio essere utile inserire la data di nascita, delle informazioni bibliografiche, l’indirizzo della sede di lavoro o, estremamente comodo, un campo per dei permessi speciali – da controllare in seguito nel template.
L’operazione che ci accingiamo a fare non necessita di un Plugin, ma il codice che serve può essere posizionato nel – consueto – file functions.php.
WordPress: rimuovere i menu dell’amministrazione
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.






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...