Buscar..


Sintaxis

  • add_action (string $ tag, callable $ function_to_add, int $ priority = 10, int $ accepted_args = 1)
  • add_filter (string $ tag, callable $ function_to_add, int $ priority = 10, int $ accept_args = 1)

Parámetros

Parámetro Detalle
$ etiqueta (cadena) (Requerido) El nombre del filtro para enlazar la devolución de llamada $ function_to_add a.
$ function_to_add (callable) (Requerido) La devolución de llamada se ejecuta cuando se aplica el filtro.
$ prioridad (int) (Opcional) 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. Valor predeterminado: 10
$ accept_args (int) (Opcional) El número de argumentos que acepta la función. Valor predeterminado: 1

Observaciones

La forma en que funcionan los enganches de los complementos es que, en varias ocasiones, mientras WordPress se está ejecutando, WordPress verifica si los complementos tienen funciones registradas para ejecutar en ese momento y, de ser así, se ejecutan las funciones. Estas funciones modifican el comportamiento predeterminado de WordPress.

Hay dos tipos de ganchos:

Los filtros le permiten cambiar el valor de un dato durante la ejecución de WordPress. Las funciones de devolución de llamada para los filtros se pasarán a través de una variable, se modificarán y luego se devolverán. Están diseñados para funcionar de manera aislada y nunca deben afectar las variables globales o cualquier otra cosa fuera de la función.

Las acciones , en contraste, le permiten agregar o cambiar el funcionamiento de WordPress. Su función de devolución de llamada se ejecutará en un punto específico en la ejecución de WordPress y puede realizar algún tipo de tarea, como hacer eco en el resultado para el usuario o insertar algo en la base de datos.

Referencia de filtro

Referencia de acción

Manual

API de plugin

Filtros vs Acciones

Filtrar

add_filter('comment_text','before_comment');
add_filter('comment_text','after_comment');
function before_comment($comment_text){
            return 'input before comment'.$comment_text;
        }
function after_comment($comment_text){
            return $comment_text.'input after comment';
        }

Acción

add_action('wp_head','hook_javascript');

function hook_javascript() {
    $output="<script> alert('Page is loading...'); </script>";
    echo $output;
}

Ejemplos de desarrollo de plugins: Widget de canción favorita

    <?php
function wpshout_register_widgets() {
    register_widget( 'Favorite_Song_Widget');
}

add_action( 'widgets_init', 'wpshout_register_widgets' );

class Favorite_Song_Widget extends WP_Widget {

function Favorite_Song_Widget() {
    // Instantiate the parent object
    parent::__construct(
            'favorite_song_widget', // Base ID
            __('Favorite Song', 'text_domain'), // Name
            array( 'description' => __( 'Widget for playable favorite song', 'text_domain' ), ) // Args
    );
}

function widget( $args, $instance ) {
    echo $args['before_widget']; 
    echo '<h3>Favorite Song Lists:</h3>';
    echo $instance['songinfo'];
    echo '<a href="' . $instance['link'] . '">Download it</a><br>';
    echo $instance['description'];
            echo $args['after_widget'];
}

function update($new_abc,$old_abc) {
    $instance = $old_abc;
    // Fields
    $instance['link'] = strip_tags($new_abc['link']);
    $instance['songinfo'] = strip_tags($new_abc['songinfo']);
            $instance['description'] = strip_tags($new_abc['description']);
    return $instance;
}

// Widget form creation
function form($instance) {
     $link = '';
    $songinfo = '';
            $description = '';
    // Check values
    if( $instance) {
        $link = esc_attr($instance['link']);
        $songinfo = esc_textarea($instance['songinfo']);
                    $description = esc_textarea($instance['description']);
    } ?>
     

    <p>
        <label for="<?php echo $this->get_field_id('link'); ?>"><?php _e('Link', 'wp_widget_plugin'); ?></label>
        <input class="widefat" id="<?php echo $this->get_field_id('link'); ?>" name="<?php echo $this->get_field_name('link'); ?>" type="text" value="<?php echo $link; ?>" />
    </p>
     
    <p>
        <label for="<?php echo $this->get_field_id('songinfo'); ?>"><?php _e('Song Info:', 'wp_widget_plugin'); ?></label>
        <input class="widefat" id="<?php echo $this->get_field_id('songinfo'); ?>" name="<?php echo $this->get_field_name('songinfo'); ?>" type="text" value="<?php echo $songinfo; ?>" />
    </p>
            
            <p>
        <label for="<?php echo $this->get_field_id('description'); ?>"><?php _e('Description:', 'wp_widget_plugin'); ?></label>
        <textarea class="widefat" id="<?php echo $this->get_field_id('description'); ?>" name="<?php echo $this->get_field_name('description'); ?>" type="text" value="<?php echo $description; ?>"></textarea>
    </p>
            
            <p><a href="#" id="add-more-tabs"><?php _e('Add More Tabs', 'wp_widget_plugin'); ?></a></p>
    
<?php }

}



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