programmazione Plugin programmare wordpress
Il database di wordpress è composto da svariate tabelle dove vengono archiviate informazioni sulle informazioni del sito e dei vari plugin, quella che ora ci può interessare è wp_option. Per consultare i database ci sono programmi appositi: Phpmyadmin, Sequel pro o un plugin wordpress Database browser.

La funzione per il salvataggio delle opzioni è add_action nella quale viene passato l’hook di alto livello admin_init.
Fatti i nostri controlli iniziali, spiegati nel capitolo 1, definite le directory principali e creati i file mioplugin-options.php e mioplugin-menus.php nella directory includes, iniziamo a scriviamo il codice di esempio:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
if ( ! defined( 'WPINC' ) ) { die; } // Define plugin paths and URLs define( 'MIOPLUGIN_URL', plugin_dir_url( __FILE__ ) ); define( 'MIOPLUGIN_DIR', plugin_dir_path( __FILE__ ) ); define( 'MIOPLUGIN_BASENAME', plugin_basename( __FILE__ )); // Create Plugin Options include( plugin_dir_path( __FILE__ ) . 'includes/mioplugin-options.php'); // Create Plugin Admin Menus and Setting Pages include( plugin_dir_path( __FILE__ ) . 'includes/mioplugin-menus.php'); |
Con il file mioplugin-options.php andremo a collegarci all’unità d’amministrazione. Utilizzando l’hook di alto livello admin_init nel comando add_action, richiamiamo tramite il callback, una funzione che invocherà il comando add_option :
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php // Function for learning how to add options // SQL Query: SELECT * FROM wp_options WHERE option_name = "mioplugin_option"; function mioplugin_options() { if ( !get_option( 'mioplugin_option' ) ){ add_option( 'mioplugin_option', 'My NEW Plugin Options' ); } update_option( 'mioplugin_option', 'My Updated Plugin Options' ); //delete_option( 'mioplugin_option' ); } add_action( 'admin_init', 'mioplugin_options' ); |
Esaminando il database e con una query di questo tipo: SELECT * FROM wp_options WHERE option_name = “mioplugin_option”; vedremo che che la nostra opzione è stata aggiunta con il nome mioplugin_option con il valore di My NEW Plugin Options.
Per aggiornare il nostro valore si utilizza il comando update_option che controlla se l’opzione esiste, la modifica e se non esiste la crea. Un esempio: update_option( ‘mioplugin_option’, ‘My Updated Plugin Options’ );
per eliminare un’opzione invece si usa il comando delete_option, usato in questa maniera: delete_option( ‘mioplugin_option’ );
Per verificare se un’opzione esiste si usa il comando get_option, questo comando restituisce false nel caso non esiste, altrimenti restituirà il valore dell’opzione.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<?php function mioplugin_settings_pages() { add_menu_page( __( 'Practice Name', 'mio-plug-in' ), __( 'Practice', 'mio-plug-in' ), 'manage_options', 'mioplugin', 'mioplugin_settings_page_markup', 'dashicons-screenoptions', 100 ); } add_action( 'admin_menu', 'mioplugin_settings_pages' ); function mioplugin_settings_page_markup() { // Double check user capabilities if ( !current_user_can('manage_options') ) { return; } include( MIOPLUGIN_DIR . 'templates/admin/settings-page.php'); } // Add a link to your settings page in your plugin function mioplugin_add_settings_link( $links ) { $settings_link = '<a href="admin.php?page=mioplugin">' . __( 'Settings' ) . '</a>'; array_push( $links, $settings_link ); return $links; } $filter_name = "plugin_action_links_" . MIOPLUGIN_BASENAME; add_filter( $filter_name, 'mioplugin_add_settings_link' ); |
Creiamo la pagina di settaggio nel percorso templates/admin/settings-page.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<div class="wrap"> <h1><?php esc_html_e( get_admin_page_title() ); ?></h1> <p><?php esc_html_e( 'Option:', 'mio-plug-in' ); ?></p> <p><?php if ( !get_option( 'wpplugin_option') ){ esc_html_e('no options saved'); } else { // code... esc_html_e( get_option( 'wpplugin_option' ) ); } ?></p> </div> |
Salvare un array di dati
Per salvare un array di dati, all’utilizzo del comando add_option, bisogna passare come parametro l’array piuttosto che il dato singolo, stessa cosa per farel’aggiornamento con update_option.
Andando a modificare il file mioplugin.options.php con l’aggiuntaa dell’arrey:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
function mioplugin_options() { // $options = [ // 'First Name', // 'Second Option', // 'Third Option' // ]; $options = []; $options['name'] = 'luke musty'; $options['location'] = 'Milano'; $options['sponsor'] = 'Plugin Co.'; if( !get_option( 'mioplugin_option' ) ) { add_option( 'mioplugin_option', $options ); } update_option( 'mioplugin_option', $options ); // delete_option( 'mioplugin_option' ); } add_action( 'admin_init', 'mioplugin_options' ); |
Con un ciclo foreach si può visualizzarne il contenuto, modificando il file settings-page.php come segue:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<div class="wrap"> <h1><?php esc_html_e( get_admin_page_title() ); ?></h1> <h2><?php esc_html_e( 'All Options', 'mio-plug-in' ); ?></h2> <?php $options = get_option( 'mioplugin_option' ); ?> <ul> <?php foreach( $options as $option ): ?> <li><?php echo $option; ?></li> <?php endforeach; ?> </ul> <?php if( array_key_exists( 'name', $options ) ): ?> <h2><?php esc_html_e( 'Specific Option', 'mio-plug-in' ); ?></h2> <p><?php esc_html_e( $options['name'] ); ?></p> <?php endif; ?> </div> |
Una risposta a “Capitolo 7 salvataggio dati delle opzioni”
[…] per la creazione del menu andare al capitolo 7 alla funzione mioplugin-settings-pages […]