1. Code
  2. WordPress

50 Acciones de WordPress - 50 Ejemplos (del 11 al 20)

En la anterior parte de esta serie, comenzamos viendo 50 acciones de WordPress, seleccionadas entre cientos y empezamos revisando 10 de ellas. En este tutorial, vamos a ver otro grupo y a hacer ejemplos con cada una de ellas.
Scroll to top
9 min read
This post is part of a series called Fifty Actions of WordPress.
Fifty Actions of WordPress – 50 Examples (21 to 30)

Spanish (Español) translation by Oscar Abad Folgueira (you can also view the original English article)

En la anterior parte de esta serie, comenzamos viendo 50 acciones de WordPress, seleccionadas entre cientos y empezamos revisando 10 de ellas. En este tutorial, vamos a ver otro grupo y a hacer ejemplos con cada una de ellas.

¡Comencemos!

Manejando los Estilos por Defecto de WordPress

WordPress tiene muchos ficheros CSS para usar en su back-end y front-end. Con la acción wp_defaut_styles, podemos juguetear con los estilos por defecto de WordPress.

Eliminando ie.css del Panel de Administración de WordPress

Si eres el único que utilizas el panel de administración de tu web WordPress y no usas Internet Explorer, no hay necesidad de cargar el CSS de IE, ¿correcto?

Puedes utilizar el código de abajo para eliminar el ie.css:

1
<?php
2
3
add_action( 'wp_default_styles', 'wp_default_styles_example' );
4
5
function wp_default_styles_example( $wp_styles ) {
6
    $wp_styles->remove( 'ie' );
7
}
8
9
?>

Ahora mismo, no estoy seguro de que WordPress necesite este fichero después de todo, ie.css fija cosas que se muestran mal en IE7 y posteriores hasta donde yo se, el porcentaje de uso de IE7 ha caído por debajo del 1%.

Deberíamos sugerir un parche, ¿n te parece?

Manejar la Función get_footer()

Si necesitas trabajar con la función get_footer(), no necesitas profundizar mucho - puedes usar la acción con el mismo nombre, get_footer!

Inyectar Javascript en página en el Pie de Página

Digamos que tienes algún jQuery que necesitas imprimir el el pie de página de tus páginas web. Puedes usar este código para hacerlo:

1
<?php
2
3
add_action( 'get_footer', 'get_footer_example' );
4
5
function get_footer_example( $name ) {
6
  if ( 'new' == $name ) { ?>
7
		<script>
8
			(function( $ ) {
9
				//put all your jQuery goodness in here.

10
			})( jQuery );
11
		</script>
12
	<?php
13
	}
14
}
15
16
// Example Source: https://codex.wordpress.org/Plugin_API/Action_Reference/get_footer

17
18
?>

Allí. Hemos usado algo de código JavaScript para este ejemplo pero puedes ejecutar cualquier código en tu pie de página.

Inicializando el Panel de Administración

Este pequeña pero útil función se lanza cada vez que se visita una página de administración, por lo que tiene muchos usos diferentes. ¡Se creativo!

Mantener a los Usuarios No Administradores Lejos del Panel de Administración

Digamos que no quieres que tus subscriptores puedan visitar el panel de administración y no tienes contribuidores, autores o editores. Para redireccionar a todos los no administradores a la página de inicio, puedes usar el siguiente código:

1
<?php
2
3
add_action( 'admin_init', 'admin_init_example', 1 );
4
5
function admin_init_example() {
6
	if ( ! current_user_can( 'manage_options' ) && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) {
7
		wp_redirect( site_url() ); 
8
		exit;
9
	}
10
}
11
12
// Example Source: http://codex.wordpress.org/Plugin_API/Action_Reference/admin_init

13
14
?>

Si quieres, puedes cambiar la dirección de redirección de tu página de inicio a cualquier otra: Solo elimina el site_url() e introduce la dirección que quieras con comillas simples (como 'http://www.google.com/').

Al entrar en el Proceso de Autentificación

La documentación en linea define esta acción simplemente con esta frase: "Se ejecuta para autentificar un usuario cuando inicia sesión".

Permitir Direcciones de Correo Electrónico como Nombres de Usuario al Iniciar Sesión.

WordPress no permite a los usuarios que inicien sesión con su dirección de correo electrónico - tienes que recordar tu nombre de usuario. Si tu usuario típico tiene tendencia a olvidar su nombre de usuario, puedes utilizar este código de abajo y decir a tus usuarios que también pueden acceder con su dirección de correo electrónico:

1
<?php
2
3
add_action( 'wp_authenticate', 'wp_authenticate_example' );
4
5
function wp_authenticate_example( $username ) {
6
	$user = get_user_by( 'email', $username );
7
	if ( ! empty( $user->user_login ) ) {
8
		$username = $user->user_login;
9
    }
10
	return $username;
11
}
12
13
// Example Source: http://bavotasan.com/2011/log-in-to-wordpress-using-an-email-address/

14
15
?>

Ahora, tus usuarios pueden introducir sus direcciones de correo electrónico en lugar de sus nombres de usuario.

Jugando Con el Formulario de Inicio de Sesión

La acción login_form nos permite manipular la salida del clásico formulario de acceso de WordPress.

Mostrar un Aviso en el Formulario de Acceso

En el ejemplo anterior, te mostramos como dejar que tus usuarios utilicen sus direcciones de correo electrónico en lugar de los nombres de usuario. Si no eres un fanático de este comportamiento, puedes avisar a tus usuarios sobre el hecho de que no pueden usar sus direcciones de correo electrónico:

1
<?php
2
3
add_action( 'login_form', 'login_form_example' );
4
5
function login_form_example() {
6
	echo '<p><strong>Remember:</strong> You must enter your username, not your email address!</p>';
7
}
8
9
?>

Por supuesto, puedes poner otros avisos como "No hagas click en el checkbox 'Recuérdame' si estás en un ordenador compartido" o uno como "Si estás bajo amenaza de un ladrón mientras hayas accedido, introduce tu contraseña al revés y WordPress llamará a la policía - pero espera, si estás leyendo esto, el chico malo también lo leerá... Corre!" También puedes usar HTML.

Manejar los Elementos del Menú de Administración

Definido como "se ejecuta después de que la estructura del menu del panel de administración esté cargada", la acción admin_menu nos permite añadir o eliminar la información de los elementos del menu (y elementos de sub-menu) del panel de administración de WordPress.

Eliminación de los Elementos de Menu que no Deben Ver los Clientes

Es un escenario familiar para los desarrolladores Wordpress freelances: Un cliente necesita acceder a ciertas páginas de "Opciones" de plugins pero no deben tocar ninguna página de "Opciones" del propio WordPress.

En resumen, hay páginas a las que los clientes necesitan acceder y hay otras a las que no deben acceder. El ejemplo de abajo nos ayuda a eliminar elementos del menú de administración:

1
<?php
2
3
if ( ! current_user_can( 'manage_options' ) ) {
4
	add_action( 'admin_menu', 'admin_menu_example' );
5
}
6
7
function admin_menu_example() {
8
  remove_menu_page( 'index.php' );                  //Dashboard

9
  remove_menu_page( 'edit.php' );                   //Posts

10
  remove_menu_page( 'upload.php' );                 //Media

11
  remove_menu_page( 'edit.php?post_type=page' );    //Pages

12
  remove_menu_page( 'edit-comments.php' );          //Comments

13
  remove_menu_page( 'themes.php' );                 //Appearance

14
  remove_menu_page( 'plugins.php' );                //Plugins

15
  remove_menu_page( 'users.php' );                  //Users

16
  remove_menu_page( 'tools.php' );                  //Tools

17
  remove_menu_page( 'options-general.php' );        //Settings

18
  
19
}
20
21
// Example Source: http://wpsnippy.com/remove-top-level-wordpress-dashboard-menu/

22
23
?>

Comenta o borra las líneas que no quieras.

Trabajando con la Función wp()

Veamos lo que dice la documentación acerca de esta acción:

"Se ejecuta después de que la consulta se ha analizado y cargado el o los posts, pero antes de la ejecución de cualquier plantilla, dentro de la función principal de WordPress wp(). Es útil si necesitas tener acceso a los datos del post pero no puedes usar plantillas para la salida."

En resumen, se lanza después de que se ha cargado la consulta. Sencilla, como su nombre.

Una Forma Sencilla de Programar Tareas Cron en WordPress

Mientras las tareas de cron se enganchan normalmente a un plugin activation hook, también podemos usar la acción wp para enganchar nuestras tareas de cron. Veamos el ejemplo que proporciona el Codex:

1
<?php
2
3
add_action( 'wp', 'prefix_setup_schedule' );
4
5
/**

6
 * On an early action hook, check if the hook is scheduled - if not, schedule it.

7
 */
8
function prefix_setup_schedule() {
9
	if ( ! wp_next_scheduled( 'prefix_hourly_event' ) ) {
10
		wp_schedule_event( time(), 'hourly', 'prefix_hourly_event');
11
	}
12
}
13
14
add_action( 'prefix_hourly_event', 'prefix_do_this_hourly' );
15
16
/**

17
 * On the scheduled action hook, run a function.

18
 */
19
function prefix_do_this_hourly() {
20
	// do something every hour

21
}
22
23
// Example Source: http://codex.wordpress.org/Function_Reference/wp_schedule_event

24
25
?>

Nota que hay otra acción llamada prefix_hourly_event - esta acción se crea automáticamente en el mismo código, justo dentro de la función wp_schedule_event(), como su tercer parámetro.

Controlando el <head> en las Páginas del Panel de Administración

Hay varios ganchos (acciones y filtros) que tienen "variables" e sus nombres. La acción admin_head-(page_name) es una de ellas, la cual es llamada en el <head> para una página de administración específica que es definida en la variable.

Cambiar el Conteo de Columnas en el Panel

Yo uso un monitor de 22" y desde la versión 3.8 de WordPress, estoy forzado a utilizar el panel con 4 columnas que es un poco molesto para mi. No estoy seguro de porqué no puedo establecer un número de columnas como podía antes, pero he encontrado una solución sencilla a este problema:

1
<?php
2
3
add_action( 'admin_head-index.php', 'admin_head_index_php_example' );
4
5
function admin_head_index_php_example() {
6
    add_screen_option(
7
        'layout_columns',
8
        array(
9
            'max'     => 3,
10
            'default' => 3
11
        )
12
    );
13
}
14
15
// Example Source: http://wpsnippy.com/bring-back-dashboard-screen-layout-options-wordpress-3-8/

16
17
?>

Ahora puedo cambiar el número de columnas como solía hacerlo - mientras el ancho de mi pantalla me lo permita. Todavía no puedo elegir más de 2 columnas en mi portátil, pero creo que puedo vivir con eso.

Modificar la Barra de Herramientas Antes de que se Renderize

La barra de herramientas de WordPress, formalmente Barra de Administración, es un elemento excelente y útil de navegación que nos ayuda en el front-end y en el back-end. Y la acción wp_before_admin_bar_render nos ayuda a interactuar con ella antes de que sea renderizada.

Añadir un Nuevo Elemento a la Barra de Administración

Si quieres que tus clientes dispongan e un enlace rápido para ponerse en contacto contigo, puedes usar estas líneas de código para añadir un enlace a su Barra de Herramientas.

1
<?php
2
3
add_action( 'wp_before_admin_bar_render', 'wp_before_admin_bar_render_example' ); 
4
5
function wp_before_admin_bar_render_example() {
6
	global $wp_admin_bar;
7
	$wp_admin_bar->add_node( array(
8
		'id'    => 'contact-designer',
9
		'title' => 'Contact Designer',
10
		'href'  => 'http://barisunver.com.tr/contact/',
11
		'meta'  => array( 'target' => '_blank' )
12
	) );
13
}
14
15
?>

Fácil, ¿verdad? Puedes utilizar la función add_node() de nuevo para crear tantos enlaces como quieras.

Procesando Actualizaciones de Perfil

El gancho profile_update nos permite buscar y trabajar con los datos de usuario justo después de que se han actualizado en la base de datos.

Informar al Usuario sobre la Actualización del Perfil

Digamos que quieres informar a los usuarios cada vez que actualizan sus perfiles. Con la ayuda de nuestra maravillosa acción y una función sencilla, puedes hacerlo.

1
<?php
2
3
add_action( 'profile_update', 'profile_update_example' );
4
5
function profile_update_example( $user_id ) {
6
	$site_url = get_bloginfo( 'name' );
7
	$user_info = get_userdata( $user_id );
8
	$user_name = $user_info->display_name;
9
	$user_email = $user_info->user_email;
10
	$subject = "Profile updated";
11
	$message = "Hello $user_name,\n\nYour profile has been updated! Please contact us if you're not the one who changed your profile.\n\nThank you for visiting $site_name.";
12
	wp_mail( $user_email, $subject, $message );
13
}
14
15
// Example Source: http://wpsnipp.com/index.php/functions-php/send-email-notification-when-profile-updates/

16
17
?>

En mi opinión, esta es una medida de seguridad sencilla pero efectiva. Dicho esto, no sería nada efectivo si un potencial hacker cambia la dirección de correo del usuario, desde que la dirección de correo electrónico se enviará a la nueva dirección de correo.

Final de la Segunda Parte

Hemos visto el segundo bloque de 50 acciones en este artículo. Espero que te haya gustado y hayas aprendido nuevas cosas de el. ¡Nos vemos en el siguiente!

Quiero tus opiniones. ¿Qué piensas sobre estas acciones? Publica tus comentarios abajo. Si te ha gustado el artículo, no olvides compartirlo!

¡Sé el primero en conocer las nuevas traducciones–sigue @tutsplus_es en Twitter!