Buscar..


Sintaxis

  • add_action ($ tag, $ function_to_add)
  • add_action ($ tag, $ function_to_add, $ prioridad)
  • add_action ($ tag, $ function_to_add, $ prioridad, $ aceptado en args)

Parámetros

Parámetro Detalles
$ etiqueta (cadena) (Requerido) El nombre de la acción a la que se engancha $function_to_add
$ function_to_add ( callable ) (Requerido) La función que se debe llamar cuando se ejecuta la acción indicada por $tag
$ prioridad (int) (Opcional) Valor predeterminado: 10 Se utiliza para especificar el orden en que se ejecutan las funciones asociadas con una acción en particular. Los números más bajos se corresponden con la ejecución anterior y las funciones con la misma prioridad se ejecutan en el orden en que se agregaron a la acción.
$ accept_args (int) (Opcional) Valor predeterminado: 1 El número de argumentos que acepta la función.

Observaciones

La función add_action() crea un Gancho de Acción , asociando una función de PHP con una "etiqueta" o nombre de acción particular. Cuando la acción es "activada" por una llamada a do_action() (o do_action_ref_array() ) con una etiqueta específica, todas las funciones "enganchadas" a esa etiqueta se ejecutarán.

En la mayoría de los casos, esta función debe usarse en el archivo functions.php un tema o en un archivo de complemento, u otro archivo de origen cargado por cualquiera.

Esta función es parte de la API del complemento

Gancho de accion basico

La aplicación más básica de add_action() es agregar código personalizado para que se ejecute en una ubicación determinada en el código fuente de una instalación de WordPress, ya sea mediante acciones proporcionadas por el Core de WordPress o creadas por códigos de terceros, como complementos y temas

Para agregar contenido a la sección <head></head> del sitio, digamos a un elemento meta <link> para indicar dónde se puede encontrar la información de copyright del sitio - se puede usar add_action() para adjuntar una función que imprime el marcado apropiado para la acción 'wp_head' (que se "dispara" cuando WordPress construye la sección <head> ):

function add_copyright_meta_link() {
  echo( '<link rel="copyright" href="' . get_home_url() . '/copyright">' );
}

add_action( 'wp_head', 'add_copyright_meta_link' );

Prioridad de gancho de acción

Cualquier número de funciones puede estar "enganchado" a cualquier acción dada. En algunos casos, es importante que una función enganchada se ejecute antes o después de otras, que es donde el tercer parámetro de add_action() , $priority entra en juego.

Si se omite el argumento $priority , la función se adjuntará con la prioridad predeterminada de 10 . Cuando la acción se "desencadena", las funciones "enganchadas" se llamarán comenzando con las agregadas con la menor $priority , y avanzando a las funciones con la mayor $priority . Cualquier función enganchada que comparta la misma prioridad se llamará en el orden en que se agregaron (el orden en que se ejecutaron sus respectivas llamadas add_action() ).

Por ejemplo, digamos que un complemento de terceros está utilizando una función enlazada a la acción 'template_redirect' para reenviar a los visitantes a la página de daily-deal a un enlace de afiliado para un sitio de comercio electrónico externo, pero le gustaría la redirección solo para usuarios registrados. Necesitaría usar su propio 'template_redirect' para enviar a los visitantes que han cerrado la sesión a la página de inicio de sesión. Después de determinar que el complemento de terceros adjunta su función con el valor predeterminado de $piority de 10 , puede conectar su función con una prioridad de 9 para asegurarse de que su comprobación de inicio de sesión se $piority primero:

function redirect_deal_visitors_to_login() {
  if( is_page( 'daily-deal' ) && !user_is_logged_in() ) {
    wp_redirect( wp_login_url() );
    exit();
  }
}

add_action( 'template_redirect', 'redirect_deal_visitors_to_login', 9 );

Enganchar métodos de clase y objeto a acciones

Las clases de PHP son una herramienta poderosa para mejorar la organización del código y minimizar las colisiones de nombres. En algún momento u otro, surge inevitablemente la cuestión de cómo crear un gancho de acción para un método de clase.

El argumento $function_to_add menudo se muestra como una cadena que contiene el nombre de la función, sin embargo, el tipo de datos del argumento es en realidad " callable ", que para nuestros propósitos puede resumirse como "una referencia a una función o método".

Hay varios formatos que se pueden llamar que se pueden usar para hacer referencia a métodos en clases y objetos. Sin embargo, en todos los casos, el método al que se hace referencia debe ser visible públicamente. Un método es público cuando está prefijado con la palabra clave public o no tiene ninguna palabra clave de visibilidad (en cuyo caso, el método se establece de forma predeterminada como público).

Método del objeto Acción ganchos

Los métodos de objeto se ejecutan en una instancia particular de una clase.

class My_Class {
  // Constructor
  function My_Class() {
    // (Instantiation logic)
  }

  // Initialization function
  public function initialize() {
    // (Initialization logic)
  }
}

Después de instanciar la clase anterior de la siguiente manera,

$my_class_instance = new My_Class();

el método initialize() normalmente se invoca en el objeto llamando a $my_class_instance->initialize(); . Enganchar el método a la acción 'init' WordPress se hace pasando una matriz que contiene una referencia a la instancia y una cadena que contiene el nombre del método del objeto:

add_action( 'init', [ $my_class_instance, 'initialize' ] );

Si se llama a add_action() dentro de un método de objeto, también se puede usar la pseudo-variable $this :

class My_Class {
  // Constructor
  function My_Class() {
    // (Instantiation logic)
    add_action( 'init', [ $this, 'initialize' ] );
  }

  // Initialization function
  public function initialize() {
    // (Initialization logic)
  }
}

Método de clase de ganchos de acción

Los métodos de clase se ejecutan de forma estática en una clase en lugar de cualquier instancia particular. Dada la siguiente clase,

class My_Class {   
  // Initialization function
  public static function initialize() {
    // (Initialization logic)
  }
}

el método initialize() normalmente se invocará utilizando el operador de :: alcance-resolución, es decir, My_Class::initialize(); . Enganchar un método de clase estático a un WordPress se puede hacer de dos maneras diferentes:

  • Usando una matriz compuesta de una cadena que contiene el nombre de la clase y una cadena que contiene el nombre del método:

    add_action( 'init', [ 'My_Class', 'initialize' ] );
    
  • Pasando una cadena que contiene una referencia completa al método, incluido el operador ::

    add_action( 'init', 'My_Class::initialize' );
    
  • Si se llama a add_action() dentro de un método de clase estático, la palabra clave self o __CLASS__ magic-constant se pueden usar en lugar del nombre de la clase. Tenga en cuenta que esto generalmente no es aconsejable, ya que los valores de estos elementos se vuelven contraintuitivos en el caso de la herencia de clase.

    class My_Class {
      // Setup function
      public static function setup_actions() {
        add_action( 'init', 'self::initialize' );
      }
    
      // Initialization function
      public static function initialize() {
        // (Initialization logic)
      }
    }
    


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow