✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Korzystanie z haka WordPress do aktualizacji opcji

19

Aktualizowanie opcji w panelu administratora WordPressa jest proste, prawda? Jest to kwestia wypełnienia pola tekstowego, zaznaczenia pola lub zamiany przycisku opcji, a następnie kliknięcia Zapisz.

Załóżmy jednak, że musisz skonfigurować podpięcie, które uruchamia się, a także aktualizuje drugorzędną, powiązaną opcję, gdy jedna jest przełączana.

Na przykład, biorąc pod uwagę opcję reprezentowaną przez pole wyboru, powiedzmy, że chcesz ustawić opcję w bazie danych, gdy pole wyboru jest odznaczone, a następnie usuwać ją, gdy ta opcja jest ustawiona.

Specjalnie do tego służy akcja, która sprawia, że ​​jest to całkiem proste.

Hak do aktualizacji opcji

Zanim przejdziesz do jakiegokolwiek kodu, jak to zrobić, powiedz, że dana opcja update_option została wyzwolona. Po wykonaniu tej czynności musisz skonfigurować wywołanie zwrotne, które będzie uruchamiane za każdym razem, gdy opcja jest ustawiona.

Oprócz tego należy wziąć pod uwagę następujące kwestie:

  1. Czy dana opcja została przełączona?
  2. Jeśli tak, czy opcja była ustawiona (zakładając, że było to pole wyboru)?
  3. Jeśli nie, czy masz plan, jak poradzić sobie z tą sprawą?

Zakładając, że wszystko powyżej zostało wyjaśnione, będziesz potrzebować funkcji do zdefiniowania akcji i funkcji, która implementuje wywołanie zwrotne. W moim przykładzie będę używał programowania obiektowego, ale można to zrobić równie dobrze w programowaniu proceduralnym.

W moim przykładzie będę używał programowania obiektowego, ale można to zrobić równie dobrze w programowaniu proceduralnym.

Przykład

Załóżmy, że masz opcję o nazwie user_is_disguised i masz inną wartość w bazie danych o nazwie user_is_superman.

Ilekroć user_is_disguised jest ustawiony na jeszcze, wtedy user_is_superman powinien być ustawiony na false. A następnie, gdy user_is_disguised jest ustawione na false, user_is_superman powinno być ustawione na true.

Ostatecznie wartości się zamieniają. Oto przykład, jak to zrobić. Najpierw musimy ustawić hak :

<?php

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

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

Następnie musimy zaimplementować funkcję zamiany wartości:

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

I to powinno się tym zająć.

Uwaga na temat argumentów

Zauważ, że wywołanie zwrotne akceptuje trzy argumenty (które są również zdefiniowane w dokumentacji, do której link znajduje się powyżej). Są one przydatne w innych, mniej wymyślnych implementacjach.

Ale być może jedną z najważniejszych rzeczy, które należy usunąć z powyższego kodu, jest sprawdzenie nazwy opcji w wywołaniu zwrotnym przed przełączeniem jakichkolwiek wartości.

Źródło nagrywania: tommcfarlin.com

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów