Advertisement
  1. Code
  2. Creative Coding

¡Trucos Rápidos! 9 Útiles Fragmentos de Código para WordPress (¡Realmente Te Interesará Conocerlos!)

Scroll to top
Read Time: 6 min

() translation by (you can also view the original English article)

Aquí tienes algunos breves pero útiles fragmentos de código que te facilitarán un poco la vida como desarrollador de WordPress. Veremos un poco de todo, desde cómo eliminar automáticamente entradas, cómo mostrar la imagen de miniatura de una entrada, cómo redirigir a los usuarios una vez hayan iniciado sesión. ¡Abre el programa que uses para crear código y prepárate para añadir nuevos shortcuts!

Empezaremos con algunos muy sencillos compuestos por una sola línea.


1. Oculta la Barra de Escritorio del Front-End

Desde la versión 3.1, WordPress muestra una barra de administración en el fornt-end a todos los usuarios. Dependiendo de tu intención, esto podría desmerecer el aspecto de tu sitio web. Para deshabilitarla, usa la función show_admin_bar:

1
2
show_admin_bar(FALSE);

También puedes desactivarla desde tu Perfil de usuario, pero esta función es especialmente útil si tienes cientos de usuarios/miembros en el sitio web y quieres desactivarla en un solo paso.


2. Elimina las Entradas de la Papelera Automáticamente

Las entradas de la papelera pueden acabar acumulándose si olvidas eliminarlas de forma permanente. Emplea este código en el archivo wp-config.php para eliminar las entradas de la papelera.

1
2
define('EMPTY_TRASH_DAYS', 5 );

3. Activa el Depurador Interno en WordPress

Cuando estás desarrollando, tienes que visualizar los errores que está lanzando tu código. Ten en cuenta que no todos los errores evitan que un script se ejecute sin embargo siguen siendo errores, y podrían tener extraños efectos en el resto de tu código. Así que, activa la depuración en WordPress colocando el siguiente código en wp-config.php:

1
2
define('WP_DEBUG', TRUE);

Te sorprenderá lo que vas a encontrar en el footer. Recuerda activar desactivar el depurado cuando tu sitio web esté preparado para salir a la luz pública. La información de depuración puede resultar de mucha utilidad a los hackers.


4. Redirecciona a los Usuarios Tras Iniciar Sesión

Cuando un usuario inicia sesión, normalmente son enviados a su escritorio. Esto podría no ser lo que pretendes para tus ellos. El siguiente código usa el filtro login_redirect para redireccionar a los usuarios no administradores a la página de inicio:

1
2
add_filter("login_redirect", "subscriber_login_redirect", 10, 3);
3
4
function subscriber_login_redirect($redirect_to, $request, $user){  
5
6
  if(is_array($user->roles)){
7
  
8
    if(in_array('administrator', $user->roles)) return home_url('/wp-admin/');
9
    
10
  }
11
  
12
  return home_url();
13
14
}

Basándote en el rol del usuario, podrías enviarlos a cualquier página que quieras.


5. Mostrar una Imagen en Miniatura Por Defecto para las Entradas

Desde la versión 2.9, WordPress ha proporcionado una opción para la imagen destacada de cada entrada, igual que las que ves en Tuts+. En la página de administración de las entradas se les denomina "Imagen destacada". Pero si no tienes ninguna imagen preparada para tu entrada, puedes usar una imagen por defecto.

Dentro del loop:

1
2
if(has_post_thumbnail()){
3
4
  the_post_thumbnail();
5
6
}else{
7
8
  echo '<img src="' .  get_bloginfo('template_directory') . '/images/default_post_thumb.jpg" />';
9
10
}
  • comprueba si la entrada tiene una imagen de miniatura, para ello debería estar presente el código has_post_thumbnail.
  • si es así, lo muestra con the_post_thumbnail()
  • de no ser así, genera una etiqueta de imagen para tu imagen de miniatura por defecto.

Podrías incluso contar con varias imágenes por defecto y seleccionar una de forma aleatoria.


6. Mostrar el mensaje "Hace Tiempo" en la Fecha de las Entradas y los Comentarios

En lugar de mostrar "Publicado en octubre, 12, 2011", podemos mostrar "Publicado hace 2 días".

Como se utiliza en el loop:

1
2
echo human_time_diff(get_the_time('U'), current_time('timestamp')) . ' ago';
  • human_time_diff() convierte el valor del timestamp a un formato más comprensible
  • get_the_time() captura el tiempo en el que se creó la entrada, el parámetro "U" obtiene el valor como timestamp en formato Unix
  • current_time() captura el tiempo actual, el parámetro "timestamp" captura el valor como timestamp en formato Unix

Puedes usarlo también en los comentarios:

1
2
echo human_time_diff(get_comment_time('U'), current_time('timestamp')) . ' ago';

O quizá quieras mostrar el habitual formato fecha/hora de la entrada solo si ha transcurrido más de una semana desde su publicación, y de no ser así mostrar el formato "hace x días":

1
2
$time_diff = current_time('timestamp') - get_the_time('U');
3
4
if($time_diff < 604800){//seconds in a week = 604800

5
6
  echo 'Posted ' . human_time_diff(get_the_time('U'), current_time('timestamp')) . ' ago';
7
8
}else{
9
10
  echo 'Posted on ' . get_the_date() . ', ' . get_the_time();
11
12
};

7. Aplicar un Estilo Distinto a los Comentarios del Autor de la Entrada

Es muy cómodo para los usuarios poder ver cuando el autor de una entrada deja un comentario en la misma, tal y como hacemos aquí en Tuts+. Todo lo que tienes que hacer es añadir una clase al wrapper del comentario y después crear un estilo específico para ella en tu hoja de estilos.

Para encontrar qué comentarios pertenecen al autor de la entrada, usamos este código de salida como nombre de clase:

1
2
if($comment->user_id == get_the_author_meta('ID')){
3
4
  echo '<div class="comment_wrapper author_comment">';
5
6
}else{
7
8
  echo '<div class="comment_wrapper">';
9
10
}

Comparamos el ID del usuario que ha hecho el comentario con el ID del autor de la entrada que proporciona get_the_author_meta. Si coinciden, devolvemos la clase author_comment a la que después podremos aplicar estilos diferenciados con css.


8. Mostrar la Información de Usuario, Entrada Y Comentario Para Tu Sitio WordPress

Puedes hacer consultas directas a la base de datos de tu WordPress para mostrar útil información sobre tu sitio web. Coloca esta función en tu archivo functions.php e invócala desde cualquier lugar de tu archivos de plantilla con get_site_data()

1
2
function get_site_data(){
3
4
  global $wpdb;
5
  
6
  $users = $wpdb->get_var("SELECT COUNT(ID) FROM $wpdb->users");
7
  
8
  $posts = $wpdb->get_var("SELECT COUNT(ID) FROM $wpdb->posts WHERE post_status = 'publish'");
9
  
10
  $comments = $wpdb->get_var("SELECT COUNT(comment_ID) FROM $wpdb->comments");
11
  
12
  echo '<p>' . $users . ' members have made ' . $comments . ' comments in ' . $posts . ' posts</p>';
13
14
}

Hacerlo de esta forma es mucho mejor que invocando algunas de las funciones nativas de WordPress ya que tiene en cuenta todos los tipos de post y solo las entradas que han sido realmente publicadas.


9. Añadir un Archivo JavaScript Correctamente

WordPress nos proporciona la función wp_enqueue_script de forma que podamos añadir scripts con seguridad.

Imagina por ejemplo que tenemos un directorio de scripts dentro de nuestro directorio de plantillas, y en él tenemos un script llamado do_stuff.js. Por tanto tenemos url_to_template_dir/scripts/do_stuff.js

Vamos ahora a incluir nuestro script de forma correcta. Debe incluirse antes de la llamada wp_head de nuestro archivo header.

1
2
$script_url = get_template_directory_uri() . '/scripts/do_stuff.js'; 
3
4
wp_enqueue_script('do_stuff', $script_url);

Aquí concatenamos la ruta y el nombre de nuestro script en la salida de la función get_template_directory_uri de WordPress. Después ponemos en cola el script proporcionando un manejador (para posibles futuras referencias) y la url del script. Ahora WordPress incluirá nuestro script en cada página.

La auténtica ventaja de todo esto es que, pongamos que nuestro script do_stuff es jQuery, entonces tendríamos que tener cargado también jQuery.

Actualmente, jQuery está incluido por defecto en WordPress, y ha sido registrado con anterioridad mediante el manejador jQuery. Así que todo lo que tenemos que hacer es poner en cola nuestro jQuery, y después nuestro do_stuff.js, de la siguiente manera:

1
2
wp_enqueue_script('jquery');
3
4
$script_url = get_template_directory_uri() . '/scripts/do_stuff.js'; 
5
6
wp_enqueue_script('do_stuff', $script_url, array('jquery'));

Observa el tercer parámetro en wp_enqueue_script para do_stuff: le indica a WordPress que nuestro scrip do_stuff es dependiente del archivo que contiene el manejador jquery. Esto es importante porque significa que ese jquery será cargado antes de do_stuff. De hecho, podrías disponer las declaraciones de la cola de procesado en orden inverso y no alteraría nada ya que definir las dependencias de los scripts permite a WordPress colocar los scripts en el orden de carga correcto de forma que funcionen juntos sin conflictos.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.