✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

Verwenden eines WordPress-Hooks zum Aktualisieren von Optionen

20

Die Aktualisierungsoptionen im WordPress-Adminbereich sind einfach, oder? Es geht darum, ein Textfeld auszufüllen, ein Kästchen anzukreuzen oder ein Optionsfeld auszutauschen und dann auf Speichern zu klicken.

Aber nehmen wir an, Sie müssen einen Hook einrichten, der ausgelöst wird und der auch eine sekundäre, verwandte Option aktualisiert, wenn eine umgeschaltet wird.

Nehmen wir zum Beispiel an, dass Sie bei einer Option, die durch ein Kontrollkästchen dargestellt wird, eine Option in der Datenbank festlegen möchten, wenn das Kontrollkästchen deaktiviert ist, und sie dann löschen möchten, wenn diese Option aktiviert ist.

Es gibt eine Aktion speziell dafür, die es ziemlich einfach macht.

Ein Hook zum Aktualisieren von Optionen

Bevor Sie in irgendeinen Code einsteigen, um dies zu tun, sagen Sie, dass die angegebene update_option ausgelöst wurde. Wenn Sie fertig sind, müssen Sie einen Rückruf einrichten, der immer dann ausgelöst wird, wenn die Option festgelegt ist.

Dazu kommen noch folgende Überlegungen:

  1. Wurde die betreffende Option umgeschaltet?
  2. Wenn ja, war die Option gesetzt (vorausgesetzt, es war ein Kontrollkästchen)?
  3. Wenn nicht, haben Sie einen Plan, wie Sie mit diesem Fall umgehen?

Unter der Annahme, dass alle oben genannten Punkte geklärt sind, benötigen Sie eine Funktion zum Definieren der Aktion und eine Funktion, die den Rückruf implementiert. In meinem Beispiel werde ich objektorientierte Programmierung verwenden, aber es kann genauso gut in prozeduraler Programmierung durchgeführt werden.

In meinem Beispiel werde ich objektorientierte Programmierung verwenden, aber es kann genauso gut in prozeduraler Programmierung durchgeführt werden.

Ein Beispiel

Angenommen, Sie haben eine Option namens user_is_disguised und einen anderen Wert in der Datenbank namens user_is_superman.

Immer wenn user_is_disguised auf yet gesetzt ist, sollte user_is_superman auf false gesetzt werden. Und wenn user_is_disguised auf false gesetzt ist, sollte user_is_superman auf true gesetzt werden.

Am Ende tauschen sich die Werte. Hier ist ein Beispiel, wie es geht. Zuerst müssen wir den Hook einrichten :

<?php

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

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

Dann müssen wir die Funktion zum Austauschen der Werte implementieren:

<?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 );
  }
}

Und das sollte sich darum kümmern.

Eine Anmerkung zu Argumenten

Beachten Sie, dass der Rückruf drei Argumente akzeptiert (die auch in der oben verlinkten Dokumentation definiert sind). Diese sind in anderen, weniger erfundenen Implementierungen nützlich.

Aber vielleicht ist eines der wichtigsten Dinge, die Sie aus dem obigen Code mitnehmen sollten, dass Sie den Optionsnamen im Callback überprüfen, bevor Sie Werte umschalten.

Aufnahmequelle: tommcfarlin.com

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen