Icono del sitio Imacreste

Crear widget WordPress

Los widget de WordPress son zonas en las que el usuario puede añadir información de forma sencilla (arrastrando) desde la sección widgets en apariencia, y permite una configuración muy sencilla. Podemos examinar el fichero widgets.php en la carpeta wp-includes para entender las funciones que podemos usar.

Registrar un Widget

El primer paso es registrar un Widget, que será el elemento que el usuario podrá arrastrar a sus zonas de widgets.

add_action('widgets_init','imacPrestashop_widget'); 
function imacPrestashop_widget() { 
register_widget( 'imacPrestashop_1_widget' );
 }

Simplemente llamamos al conector widgets_init y le indicamos que ‘conecte’ el nuevo mediante register_widget, ahora hay que darle funcionalidad para los que extenderemos de la clase de WordPress WP_Widget.

WP_Widget{class mi_widget extends WP_Widget{ 
function __construct(){ 
} 
}

En primer lugar vamos a definir, dentro de la clase anterior, la información que se visualiza sobre el widget:

$options = array( 
'classname' => 'mi_class', 
'description' => 'Mostrar productos prestashop.' 
); 
__construct('id_widget','name_widget',$options);

Y con esto ya tendremos un Widget que se podrá incorporar a las diferentes zonas establecidas.

Definir ajustes de Widget

Los ajustes del Widget son aquellos que se presentan al usuario cuando arrastra el mismo a una de las zonas de Widget.

function form($instance){                                                               
$defaults= array(
‘title‘ => ‘título’,
‘name ‘ => ‘imacreste’,
'email’ => 'imacreste@gmail.com'
);
$instance=wp_parse_args((array) $instance, $defaults);                          
$name =$instance[‘name’];
$title=$instance[‘title’];
$email =$instance[‘email’];
?>  
<p>title: <input type="text" class="widefat" name="<?php echo $this->get_field_name(' title')?>" 
value="<?php echo esc_attr($title)?>" /></p>                             
<p>name: <input type="text" class="widefat" name="<?php echo $this->get_field_name(‘name’)?>" 
value="<?php echo esc_attr($name)?>" /></p>
<p>email: <input type="text" class="widefat" name="<?php echo $this->get_field_name(' email ')?>" 
value="<?php echo esc_attr($email)?>" /></p>
<?php
}

En primer lugar creamos un array con las diferentes variables y sus valores por defecto. Luego recuperamos los valores introducidos por el usuario o los de por defecto y los mostramos en el cuadro de configuraciones del widget.

Y por último usamos la clase update para actualizar la información, escapando los datos.

function update($new_instance,$old_instance){
$instance=$old_instance;
$instance['name']=sanitize_text_field($new_instance['name']);
$instance['n_products']=sanitize_text_field($new_instance['n_products']);   
$instance['email']=sanitize_text_field($new_instance['email']);     
return $instance;
}

Visualizar el Widget

Una vez desarrollado el Widget hay crear el código de visualización e integración con el tema instalado.

function widget($args, $instance){
extract($args);
echo $before_widget;
$name=$instance['name'];
$email=$instance['email'];
$title=$instance['title'];
if ( !empty($title) ){echo $before_title.esc_html($title).$after_title;}
echo "<p>name: ".esc_attr($name)."</p>";
echo "<p>email: ".esc_attr($email)."</p>";
echo $after_widget;
}

En este código solo hay que prestar atención a las etiquetas:

Y ya se puede ver nuestro widget en cualquier tema adaptado al diseño establecido por el diseñador del mismo.

Widgets de escritorio

Los Wodgets de escritorio son los que se muestran el escritorio principal de WordPress y que se suele usar para mostrar actividad relevante en nuestra web,

add_action('wp_dashboard_setup','ejemplo_escritorio_widget');
function ejemplo_escritorio_widget(){
wp_add_dasboard_widget('identificador_widget_escritorio','Título del widget','funcion');
}

function funcion(){
echo "hello world";
}
Salir de la versión móvil