Capitolo 7 salvataggio dati delle opzioni

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.

diagramma database wordpress.

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:

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 :

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

<?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:

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

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:

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

SCRIVI UN COMMENTO