✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Usando um gancho do WordPress para opções de atualização

20

Atualizar opções dentro do administrador do WordPress é simples, certo? É uma questão de preencher um campo de texto, marcar uma caixa ou trocar um botão de opção e clicar em salvar.

Mas digamos que você precise configurar um gancho que dispare que também atualize uma opção secundária relacionada sempre que uma for alternada.

Por exemplo, dada uma opção representada por uma caixa de seleção, digamos que você deseja definir uma opção no banco de dados sempre que a caixa de seleção estiver desmarcada e, em seguida, excluí-la sempre que essa opção estiver definida.

Há uma ação específica para fazer isso que facilita bastante.

Um Gancho para Atualizar Opções

Antes de entrar em qualquer código sobre como fazer isso, diga que a update_option fornecida foi acionada. Feito isso, você precisará configurar um retorno de chamada que seja acionado sempre que a opção for definida.

Além disso, há as seguintes considerações:

  1. A opção em questão foi alternada?
  2. Em caso afirmativo, a opção foi definida (supondo que fosse uma caixa de seleção)?
  3. Se não, você tem um plano de como lidar com esse caso?

Supondo que todos os itens acima tenham sido descobertos, você precisará de uma função para definir a ação e uma função que implemente o retorno de chamada. No meu exemplo, estarei usando programação orientada a objetos, mas isso também pode ser feito em programação procedural.

No meu exemplo, estarei usando programação orientada a objetos, mas isso também pode ser feito em programação procedural.

Um exemplo

Digamos que você tenha uma opção chamada user_is_disguised e outro valor no banco de dados chamado user_is_superman.

Sempre que user_is_disguised for definido como yet, user_is_superman deverá ser definido como false. E então, quando user_is_disguised é definido como false, user_is_superman deve ser definido como true.

Em última análise, os valores mudam. Aqui está um exemplo de como fazê-lo. Primeiro, precisamos configurar o gancho :

<?php

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

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

Então precisamos implementar a função para trocar os valores:

<?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 isso deve cuidar disso.

Uma Nota Sobre Argumentos

Observe que o retorno de chamada aceita três argumentos (que também são definidos na documentação vinculada acima). Eles são úteis em outras implementações menos planejadas.

Mas talvez uma das coisas mais importantes a serem tiradas do código acima é que você verifique o nome da opção no retorno de chamada antes de alternar qualquer valor.

Fonte de gravação: tommcfarlin.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação