✅ Notizie, temi, plugin WEB e WordPress. Qui condividiamo suggerimenti e le migliori soluzioni per siti web.

Utilizzo di un WordPress Hook per l’aggiornamento delle opzioni

15

L’aggiornamento delle opzioni all’interno dell’amministratore di WordPress è semplice, giusto? Si tratta di compilare un campo di testo, selezionare una casella o scambiare un pulsante di opzione, quindi fare clic su Salva.

Ma supponiamo che sia necessario impostare un hook che si attivi che aggiorni anche un’opzione correlata secondaria ogni volta che ne viene attivata una.

Ad esempio, data un’opzione rappresentata da una casella di controllo, supponiamo di voler impostare un’opzione nel database ogni volta che la casella di controllo è deselezionata e quindi eliminarla ogni volta che tale opzione è impostata.

C’è un’azione specifica per farlo che lo rende abbastanza facile.

Un gancio per l’aggiornamento delle opzioni

Prima di entrare in qualsiasi codice su come farlo, dì che l’opzione update_option data è stata scattata. Fatto ciò, dovrai configurare una richiamata che si attiva ogni volta che viene impostata l’opzione.

A ciò si aggiungono le seguenti considerazioni:

  1. L’opzione in questione è stata attivata?
  2. In tal caso, l’opzione è stata impostata (supponendo che fosse una casella di controllo)?
  3. In caso negativo, hai un piano su come gestire quel caso?

Supponendo che tutto quanto sopra sia stato risolto, avrai bisogno di una funzione per definire l’azione e una funzione che implementi il ​​callback. Nel mio esempio, utilizzerò la programmazione orientata agli oggetti, ma può essere eseguita altrettanto bene nella programmazione procedurale.

Nel mio esempio, utilizzerò la programmazione orientata agli oggetti, ma può essere eseguita altrettanto bene nella programmazione procedurale.

Un esempio

Supponiamo che tu abbia un’opzione chiamata user_is_disguised e che tu abbia un altro valore nel database chiamato user_is_superman.

Ogni volta che user_is_disguised è impostato su yet, user_is_superman dovrebbe essere impostato su false. E poi quando user_is_disguised è impostato su false, user_is_superman dovrebbe essere impostato su true.

Alla fine, i valori si scambiano. Ecco un esempio di come farlo. Per prima cosa, dobbiamo impostare l’hook :

<?php

/**
 * Initializes the defined actions.
 */
public function init() {

  add_action(
    'update_option',
    array( $this, 'toggle_other_option' ),
    10, 3
  );
}

Quindi dobbiamo implementare la funzione per lo scambio dei valori:

<?php

/**
 * If the given option_name is `user_is_disguised`, then toggles another option
 * in the database - `user_is_superman` - based on the specified values.
 *
 * @param string $option_name The name of the value being updated.
 * @param mixed  $old_value   The previous value of the option before updating it.
 * @param mixed  $new_value   The value of the option now that it's been updated.
 */
public function toggle_other_option( $option_name, $old_value, $new_value) {

  // If 'user_is_disguised' is not being changed, then don't worry about it.
  if (0 !== strcasecmp( $option_name, 'user_is_disguised')) {
   return; 
  }

  /* If 'user_is_disguised' is being set, then remove the Superman value; otherwise,
   * set it to true (but don't worry about autoloading it).
   */
  if ('1' === $new_value) {
    delete_option( 'user_is_superman' );
  } else {
    update_option( 'user_is_superman', true, false );
  }
}

E questo dovrebbe occuparsene.

Una nota sugli argomenti

Si noti che il callback accetta tre argomenti (che sono anche definiti nella documentazione collegata sopra). Questi sono utili in altre implementazioni meno artificiose.

Ma forse una delle cose più importanti da eliminare dal codice sopra è controllare il nome dell’opzione nella richiamata prima di attivare o disattivare i valori.

Fonte di registrazione: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More