Tutoriales de WordPress de Confianza, cuando más los necesitas.
Guía para Principiantes de WordPress
Copa WPB
25 Millones+
Sitios web que usan nuestros plugins
16+
Años de experiencia en WordPress
3000+
Tutoriales de WordPress de expertos

46 trucos extremadamente útiles para el archivo de funciones de WordPress

Hacer pequeños ajustes en tu sitio de WordPress puede sentirse como desbloquear superpoderes ocultos. Con solo unas pocas líneas de código en el archivo de funciones, puedes personalizar cómo funciona tu sitio, sin necesidad de complementos adicionales.

Hemos pasado años experimentando con el archivo functions.php, y es una de las herramientas más útiles en el kit de herramientas de un usuario de WordPress. Puedes agregar funciones personalizadas, eliminar cosas que no necesitas y ajustar el comportamiento de tu sitio con solo un poco de código.

Pero antes de empezar, hay una regla importante: siempre haz una copia de seguridad de tu sitio. Editar el archivo de funciones es como ajustar el motor de un coche; un pequeño error puede romper cosas. Si buscas un enfoque más seguro, te recomendamos usar en su lugar un complemento de fragmentos de código personalizados.

En esta guía, compartiremos 25 trucos útiles que puedes usar para personalizar WordPress a través del archivo de funciones. ¡Empecemos!

Prácticos consejos y trucos para el archivo functions de WordPress

¿Qué es el archivo de funciones en WordPress?

El archivo functions.php es como el cerebro de tu tema de WordPress. Viene con cada tema de WordPress gratuito y premium y permite a los desarrolladores definir funciones personalizadas.

Piénsalo como un mini-complemento integrado en tu tema. Puedes agregar fragmentos de código personalizados para ajustar cómo funciona tu sitio, desde agregar widgets adicionales hasta modificar páginas de inicio de sesión. Es una herramienta poderosa, pero tiene una pega.

Editar el archivo de funciones directamente no es la mejor idea. Si actualizas tu tema, perderás todo tu código personalizado. Y si cometes un error, podría dañar tu sitio, dejándote luchando para arreglarlo.

Por eso siempre recomendamos usar WPCode, un plugin gratuito que hace que agregar fragmentos de código sea fácil y libre de riesgos.

¿Por qué preferimos WPCode?

  • Puedes guardar fragmentos personalizados sin tocar los archivos del tema o del núcleo.
  • Coloca automáticamente tu código donde lo necesitas.
  • Los fragmentos se guardan por separado, por lo que puedes activarlos o desactivarlos en cualquier momento.
  • Tiene un sistema de seguridad incorporado que deshabilita cualquier fragmento que cause errores.

Como un bono adicional, el plugin WPCode incluye una gran biblioteca de fragmentos preconfigurados. Puedes habilitarlos con solo un clic, ¡sin necesidad de codificar!

biblioteca de wpcode

Para más información, consulta nuestra reseña detallada de WPCode.

Ahora que conoces la mejor manera de manejar fragmentos de código, sumerjámonos en algunas funciones útiles que puedes usar para personalizar tu sitio de WordPress.

Cómo agregar estos fragmentos de código a tu sitio web

Antes de comenzar, veamos cómo agregar los fragmentos de código de este artículo a su archivo de funciones de WordPress.

1. Agregar código personalizado al archivo de funciones usando WPCode (Recomendado)

Primero, necesitas instalar y activar el plugin WPCode. Para más detalles, consulta nuestra guía paso a paso sobre cómo instalar un plugin de WordPress.

Al activarlo, ve a la página Fragmentos de código » + Agregar fragmento. Verás la biblioteca de fragmentos de código de WPCode con muchos fragmentos de código personalizados útiles ya agregados.

Agregar fragmento

Si tu fragmento de código hace lo mismo que los fragmentos de la biblioteca, entonces puedes probar el que ya está agregado allí.

Alternativamente, haz clic en el enlace 'fragmento en blanco' para continuar agregando tu fragmento de código personalizado.

En la siguiente pantalla, proporciona un título para tu código personalizado. Este podría ser cualquier cosa que te ayude a identificar lo que hace este fragmento de código.

Añadir tu código personalizado

A continuación, debes elegir el 'Tipo de código'. Si estás agregando un código que funciona en el archivo functions.php, entonces debes seleccionar 'Fragmento de PHP'.

Debajo de eso, debes copiar y pegar tu código personalizado en el cuadro 'Vista previa del código'.

Finalmente, debes configurar tu fragmento como 'Activo' y hacer clic en el botón 'Guardar fragmento'.

Activar y guardar

Tu fragmento guardado ahora se ejecutará como si lo hubieras agregado al archivo functions.php.

Puedes repetir el proceso para agregar más fragmentos cuando sea necesario. También puedes desactivar un fragmento sin eliminarlo.

2. Agregar código personalizado directamente al archivo Functions

El método WPCode es siempre mejor que agregar código al archivo functions del tema.

Sin embargo, algunos usuarios pueden estar escribiendo código para el tema personalizado de WordPress de un cliente o simplemente prefieren agregar código al archivo functions.php.

En ese caso, aquí te mostramos cómo puedes agregar código al archivo functions.php de tu tema de WordPress.

Primero, conéctate a tu sitio web de WordPress usando un cliente FTP. Una vez conectado, navega a la carpeta /wp-content/themes/tu-tema-de-wordpress/.

Editar el archivo functions.php

Ahí encontrarás el archivo functions.php. Simplemente haz clic derecho y selecciona editar o descarga el archivo a tu computadora para editarlo.

Puedes editarlo usando cualquier editor de texto plano como el Bloc de notas o TextEdit.

Luego, desplázate hasta el final del archivo functions.php y pega tu fragmento de código allí. Puedes guardar tus cambios y subir el archivo functions.php actualizado a tu carpeta de temas.

Ahora puedes visitar tu sitio web de WordPress para ver tu código personalizado en acción.

Ahora, veamos 46 trucos útiles diferentes para el archivo functions de WordPress.

1. Eliminar el número de versión de WordPress

Siempre debes usar la última versión de WordPress. Sin embargo, es posible que desees eliminar el número de versión de WordPress de tu sitio.

Simplemente agrega este fragmento de código a tu archivo functions o como un nuevo fragmento de WPCode:

function wpb_remove_version() {
return '';
}
add_filter('the_generator', 'wpb_remove_version');

Para obtener instrucciones detalladas, consulta nuestra guía sobre la forma correcta de eliminar el número de versión de WordPress.

¿Quieres personalizar el área de administración de tu WordPress? El primer paso es agregar un logotipo personalizado al panel de control.

Primero, deberás subir tu logotipo personalizado a la carpeta de imágenes de tu tema como custom-logo.png. Tu logotipo personalizado debe tener una relación de 1:1 (una imagen cuadrada) en 16x16 píxeles.

Después de eso, puedes agregar este código al archivo functions de tu tema o como un nuevo fragmento de WPCode:

function wpb_custom_logo() {
echo '
<style type="text/css">
#wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon:before {
background-image: url(' . get_bloginfo('stylesheet_directory') . '/images/custom-logo.png) !important;
background-position: 0 0;
color:rgba(0, 0, 0, 0);
}
#wpadminbar #wp-admin-bar-wp-logo.hover > .ab-item .ab-icon {
background-position: 0 0;
}
</style>
';
}
//hook into the administrative header output
add_action('wp_before_admin_bar_render', 'wpb_custom_logo');

Para más detalles, consulta nuestra guía sobre cómo agregar un logo personalizado al panel de WordPress.

3. Cambia el pie de página en el panel de administración de WordPress

El pie de página en el área de administración de WordPress muestra el mensaje ‘Gracias por crear con WordPress.’ Puedes cambiarlo a lo que quieras agregando este código:

function remove_footer_admin () {

echo 'Fueled by <a href="http://www.wordpress.org" target="_blank">WordPress</a> | WordPress Tutorials: <a href="https://www.wpbeginner.com" target="_blank">WPBeginner</a></p>';

}

add_filter('admin_footer_text', 'remove_footer_admin');

Siéntete libre de cambiar el texto y los enlaces que quieras agregar. Así es como se ve en nuestro sitio de prueba.

Pie de página del administrador

4. Agregar widgets personalizados al panel de WordPress

Probablemente has visto los widgets que muchos plugins y temas agregan al panel de WordPress. Puedes agregar uno tú mismo pegando el siguiente código:

add_action('wp_dashboard_setup', 'my_custom_dashboard_widgets');

function my_custom_dashboard_widgets() {
global $wp_meta_boxes;

wp_add_dashboard_widget('custom_help_widget', 'Theme Support', 'custom_dashboard_help');
}

function custom_dashboard_help() {
echo '<p>Welcome to Custom Blog Theme! Need help? Contact the developer <a href="mailto:yourusername@gmail.com">here</a>. For WordPress Tutorials visit: <a href="https://www.wpbeginner.com" target="_blank">WPBeginner</a></p>';
}

Así es como se vería:

Widget de panel personalizado

Para más detalles, consulta nuestro tutorial sobre cómo agregar widgets personalizados al panel de WordPress.

5. Cambiar el Gravatar predeterminado en WordPress

¿Has visto el avatar predeterminado del hombre misterioso en los blogs? Puedes reemplazarlo fácilmente con tu propio avatar personalizado de marca.

Simplemente sube la imagen que quieres usar como avatar predeterminado y agrega este código a tu archivo functions o al plugin WPCode:

function wpb_custom_default_gravatar( $avatar_defaults ) {
	$myavatar = 'https://example.com/wp-content/uploads/2022/10/dummygravatar.png';
	$avatar_defaults[$myavatar] = 'Default Gravatar';
	return $avatar_defaults;
}
add_filter( 'avatar_defaults', 'wpb_custom_default_gravatar' );

Ahora puedes ir a la página Ajustes » Discusión y seleccionar tu avatar predeterminado.

Gravatar predeterminado personalizado

Para instrucciones detalladas, consulta nuestra guía sobre cómo cambiar el Gravatar predeterminado en WordPress.

6. Fecha de Copyright Dinámica en el Pie de Página de WordPress

Simplemente puedes agregar una fecha de copyright editando la plantilla del pie de página en tu tema. Sin embargo, no mostrará cuándo comenzó tu sitio y no se cambiará automáticamente el año siguiente.

Este código puede agregar una fecha de copyright dinámica en el pie de página de WordPress:

function wpb_copyright() {
global $wpdb;
$copyright_dates = $wpdb->get_results("
SELECT
YEAR(min(post_date_gmt)) AS firstdate,
YEAR(max(post_date_gmt)) AS lastdate
FROM
$wpdb->posts
WHERE
post_status = 'publish'
");
$output = '';
if($copyright_dates) {
$copyright = "© " . $copyright_dates[0]->firstdate;
if($copyright_dates[0]->firstdate != $copyright_dates[0]->lastdate) {
$copyright .= '-' . $copyright_dates[0]->lastdate;
}
$output = $copyright;
}
return $output;
}

Después de agregar esta función, necesitarás abrir tu archivo footer.php y agregar el siguiente código donde quieras mostrar la fecha de copyright dinámica:

<?php echo wpb_copyright(); ?>

Esta función busca la fecha de tu primera publicación y la fecha de tu última publicación. Luego devuelve los años donde sea que llames a la función.

Consejo: Si estás usando el plugin WPCode, puedes combinar los dos fragmentos de código. Después de eso, elige la ubicación 'Pie de página de todo el sitio' en la sección 'Inserción' de la configuración del fragmento. Esto mostrará automáticamente la fecha de derechos de autor en el pie de página sin editar el archivo footer.php de tu tema.

Añadir al pie de página usando WPCode

Para más detalles, consulta nuestra guía sobre cómo agregar fechas de derechos de autor dinámicas en WordPress.

7. Cambiar el color de fondo aleatoriamente en WordPress

¿Quieres cambiar aleatoriamente el color de fondo de tu blog de WordPress en cada visita y recarga de página? Aquí te mostramos cómo hacerlo fácilmente.

Primero, agrega este código al archivo functions de tu tema o al plugin WPCode:

function wpb_bg() {
$rand = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');
$color ='#'.$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].
$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)];

echo $color; 
} 

A continuación, deberás editar el archivo header.php de tu tema. Busca la etiqueta <body> y reemplázala con esta línea:

<body <?php body_class(); ?> style="background-color:<?php wpb_bg();?>">

Ahora puedes guardar tus cambios y visitar tu sitio web para ver este código en acción.

Colores de fondo aleatorios

Para más detalles y métodos alternativos, consulta nuestro tutorial sobre cómo cambiar el color de fondo aleatoriamente en WordPress.

8. Actualizar las URL de WordPress

Si tu página de inicio de sesión de WordPress se actualiza constantemente o no puedes acceder al área de administración, entonces necesitas actualizar las URL de WordPress.

Una forma de hacerlo es usando el archivo wp-config.php. Sin embargo, si haces eso, entonces no podrás establecer la dirección correcta en la página de configuración. Los campos de URL de WordPress y URL del sitio se bloquearán y no se podrán editar.

En su lugar, simplemente agrega este código a tu archivo de funciones para solucionarlo:

update_option( 'siteurl', 'https://example.com' );
update_option( 'home', 'https://example.com' );

No olvides reemplazar example.com con el nombre de tu dominio.

Una vez que hayas iniciado sesión, puedes ir a la página de Configuración en el área de administración de WordPress y establecer las URL.

Después de eso, deberías eliminar el código que agregaste al archivo de funciones o a WPCode. De lo contrario, seguirá actualizando esas URL cada vez que se acceda a tu sitio.

9. Agregar tamaños de imagen adicionales en WordPress

WordPress genera automáticamente varios tamaños de imagen cuando subes una imagen. También puedes crear tamaños de imagen adicionales para usar en tu tema.

Simplemente agrega este código al archivo de funciones de tu tema o como un fragmento de WPCode:

add_image_size( 'sidebar-thumb', 120, 120, true ); // Hard Crop Mode
add_image_size( 'homepage-thumb', 220, 180 ); // Soft Crop Mode
add_image_size( 'singlepost-thumb', 590, 9999 ); // Unlimited Height Mode

Este código crea tres nuevos tamaños de imagen de diferentes dimensiones. Siéntete libre de ajustar el código para que cumpla tus requisitos.

Luego puedes mostrar un tamaño de imagen en cualquier lugar de tu tema usando este código:

<?php the_post_thumbnail( 'homepage-thumb' ); ?>

Para obtener instrucciones detalladas, consulta nuestra guía sobre cómo crear tamaños de imagen adicionales en WordPress.

10. Agregar nuevos menús de navegación a tu tema

WordPress permite a los desarrolladores de temas definir menús de navegación y luego mostrarlos.

Puedes agregar este código al archivo de funciones de tu tema o como un nuevo fragmento de WPCode para definir una nueva ubicación de menú en tu tema:

function wpb_custom_new_menu() {
  register_nav_menu('my-custom-menu',__( 'My Custom Menu' ));
}
add_action( 'init', 'wpb_custom_new_menu' );

Ahora puedes ir a Apariencia » Menús en tu panel de WordPress y ver ‘Mi Menú Personalizado’ como la opción de ubicación del tema.

Ubicación de menú personalizada

Nota: Este código también funcionará con temas de bloques con la función de edición completa del sitio. Agregarlo habilitará la pantalla de Menús en Apariencia.

Ahora necesitas agregar este código a tu tema donde quieras mostrar el menú de navegación:

 <?php
wp_nav_menu( array( 
    'theme_location' => 'my-custom-menu', 
    'container_class' => 'custom-menu-class' ) ); 
?>

Para obtener instrucciones detalladas, consulta nuestra guía sobre cómo agregar menús de navegación personalizados en temas de WordPress.

11. Agregar campos de perfil de autor

¿Quieres agregar campos adicionales a los perfiles de tus autores en WordPress? Puedes hacerlo fácilmente agregando este código a tu archivo functions o como un nuevo fragmento de WPCode:

function wpb_new_contactmethods( $contactmethods ) {
// Add Twitter
$contactmethods['twitter'] = 'Twitter';
//add Facebook
$contactmethods['facebook'] = 'Facebook';

return $contactmethods;
}
add_filter('user_contactmethods','wpb_new_contactmethods',10,1);

Este código agregará campos de Twitter y Facebook a los perfiles de usuario en WordPress.

Nuevos campos de perfil

Ahora puedes mostrar estos campos en tu plantilla de autor de la siguiente manera:

<?php echo get_the_author_meta('twitter') ?>

También te puede interesar ver nuestra guía sobre cómo agregar campos adicionales al perfil de usuario en el registro de WordPress.

12. Agregar áreas listas para widgets o barras laterales en temas de WordPress

Este es uno de los fragmentos de código más utilizados, y muchos desarrolladores ya conocen la forma de agregar áreas listas para widgets o barras laterales a los temas de WordPress. Pero merece estar en esta lista para aquellas personas que no lo saben.

Puedes pegar el siguiente código en tu archivo functions.php o como un nuevo fragmento de WPCode:

// Register Sidebars
function custom_sidebars() {

	$args = array(
		'id'            => 'custom_sidebar',
		'name'          => __( 'Custom Widget Area', 'text_domain' ),
		'description'   => __( 'A custom widget area', 'text_domain' ),
		'before_title'  => '<h3 class="widget-title">',
		'after_title'   => '</h3>',
		'before_widget' => '<aside id="%1$s" class="widget %2$s">',
		'after_widget'  => '</aside>',
	);
	register_sidebar( $args );

}
add_action( 'widgets_init', 'custom_sidebars' );

Nota: Este código también funcionará con temas de bloques con la función de edición completa del sitio. Agregarlo habilitará la pantalla de Widgets en Apariencia.

Ahora puedes visitar la página Apariencia » Widgets y ver tu nueva área de widgets personalizada.

Área de widgets personalizada

Para mostrar esta barra lateral o área lista para widgets en tu sitio web, necesitarás agregar el siguiente código en la plantilla donde deseas mostrarlo:

<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('custom_sidebar') ) : ?>
<!–Default sidebar info goes here–>
<?php endif; ?>

Para más detalles, consulta nuestra guía sobre cómo agregar áreas y barras laterales dinámicas listas para widgets en WordPress.

13. Manipular el pie de página del feed RSS

¿Has visto blogs que agregan sus anuncios en sus feeds RSS debajo de cada publicación? Puedes lograr esto fácilmente con una función simple. Simplemente pega el siguiente código:

function wpbeginner_postrss($content) {
if(is_feed()){
$content = 'This post was written by Syed Balkhi '.$content.'Check out WPBeginner';
}
return $content;
}
add_filter('the_excerpt_rss', 'wpbeginner_postrss');
add_filter('the_content', 'wpbeginner_postrss');

Para más información, consulta nuestra guía sobre cómo agregar contenido y manipular completamente tus feeds RSS.

14. Agregar imágenes destacadas a los feeds RSS

Las miniaturas de las publicaciones o las imágenes destacadas generalmente solo se muestran dentro del diseño de tu sitio. Puedes extender fácilmente esa funcionalidad a tu feed RSS con el siguiente código:

function rss_post_thumbnail($content) {
global $post;
if(has_post_thumbnail($post->ID)) {
$content = '<p>' . get_the_post_thumbnail($post->ID) .
'</p>' . get_the_content();
}
return $content;
}
add_filter('the_excerpt_rss', 'rss_post_thumbnail');
add_filter('the_content_feed', 'rss_post_thumbnail');

Para más detalles, consulta nuestra guía sobre cómo agregar miniaturas de publicaciones a tus feeds RSS de WordPress.

15. Ocultar errores de inicio de sesión en WordPress

Los hackers pueden usar los errores de inicio de sesión para adivinar si ingresaron el nombre de usuario o la contraseña incorrectos. Al ocultar los errores de inicio de sesión en WordPress, puedes hacer que tu área de inicio de sesión y sitio web de WordPress sean más seguros.

Simplemente agrega el siguiente código al archivo functions de tu tema o como un nuevo fragmento de WPCode:

function no_wordpress_errors(){
  return 'Something is wrong!';
}
add_filter( 'login_errors', 'no_wordpress_errors' );

Ahora, los usuarios verán un mensaje genérico cuando ingresen un nombre de usuario o contraseña incorrectos.

Errores de inicio de sesión personalizados

Para más información, consulta nuestro tutorial sobre cómo deshabilitar sugerencias de inicio de sesión en los mensajes de error de inicio de sesión de WordPress.

16. Deshabilitar inicio de sesión por correo electrónico en WordPress

WordPress permite a los usuarios iniciar sesión con su nombre de usuario o dirección de correo electrónico. Puedes deshabilitar fácilmente el inicio de sesión por correo electrónico en WordPress agregando este código a tu archivo functions o como un nuevo fragmento de WPCode:

remove_filter( 'authenticate', 'wp_authenticate_email_password', 20 );

Para más información, consulta nuestra guía sobre cómo deshabilitar la función de inicio de sesión por correo electrónico en WordPress.

17. Deshabilitar la función de búsqueda en WordPress

Si deseas deshabilitar la función de búsqueda de tu sitio de WordPress, simplemente agrega este código a tu archivo functions o en un nuevo fragmento de WPCode:

function wpb_filter_query( $query, $error = true ) {
if ( is_search() ) {
$query->is_search = false;
$query->query_vars[s] = false;
$query->query[s] = false;
if ( $error == true )
$query->is_404 = true;
}}

Este código simplemente deshabilita la consulta de búsqueda modificándola y devolviendo un error 404 en lugar de resultados de búsqueda.

Para más información, consulta nuestro tutorial sobre cómo deshabilitar la función de búsqueda de WordPress.

Consejo profesional: En lugar de renunciar a la búsqueda de WordPress, te recomendamos probar SearchWP. Es el mejor plugin de búsqueda de WordPress del mercado que te permite agregar una función de búsqueda potente y personalizable a tu sitio web.

18. Retrasar la aparición de publicaciones en el feed RSS

A veces, puedes publicar un artículo con un error gramatical o de ortografía.

El error se publica y se distribuye a los suscriptores de tu feed RSS. Si tienes suscripciones por correo electrónico en tu blog de WordPress, esos suscriptores también recibirán una notificación.

Simplemente agrega este código al archivo functions de tu tema o como un nuevo fragmento de WPCode para retrasar la aparición de publicaciones en tu feed RSS:

function publish_later_on_feed($where) {

	global $wpdb;

	if ( is_feed() ) {
		// timestamp in WP-format
		$now = gmdate('Y-m-d H:i:s');

		// value for wait; + device
		$wait = '10'; // integer

		// http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timestampdiff
		$device = 'MINUTE'; //MINUTE, HOUR, DAY, WEEK, MONTH, YEAR

		// add SQL-sytax to default $where
		$where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
	}
	return $where;
}

add_filter('posts_where', 'publish_later_on_feed');

En este código, usamos 10 minutos como tiempo de espera o retraso ($wait). Siéntete libre de cambiar esto a cualquier número de minutos que desees.

Para un método con plugin y más información, consulta nuestra guía detallada sobre cómo retrasar la aparición de publicaciones en el feed RSS de WordPress.

19. Cambiar el texto "Leer más" para los extractos en WordPress

¿Quieres cambiar el texto que aparece después del extracto en tus publicaciones? Simplemente agrega este código al archivo functions de tu tema o como un nuevo fragmento de WPCode:

function modify_read_more_link() {
    return '<a class="more-link" href="' . get_permalink() . '">Your Read More Link Text</a>';
}
add_filter( 'the_content_more_link', 'modify_read_more_link' );

20. Desactivar RSS Feeds en WordPress

No todos los sitios web necesitan RSS feeds. Si deseas desactivar los RSS feeds en tu sitio de WordPress, agrega este código al archivo functions de tu tema o como un nuevo fragmento de WPCode:

function new_excerpt_more($more) {
 global $post;
 return '<a class="moretag" 
 href="'. get_permalink($post->ID) . '">Your Read More Link Text</a>';
}
add_filter('excerpt_more', 'new_excerpt_more');

Para más información sobre un método de plugin, consulta nuestra guía sobre cómo desactivar los RSS feeds en WordPress.

21. Cambiar la longitud del extracto en WordPress

WordPress limita la longitud de los extractos a 55 palabras. Puedes agregar este código a tu archivo functions o como un nuevo fragmento de WPCode si necesitas cambiar eso:

function new_excerpt_length($length) {
return 100;
}
add_filter('excerpt_length', 'new_excerpt_length');

Simplemente cambia 100 por el número de palabras que deseas mostrar en los extractos.

Para métodos alternativos, puedes consultar nuestra guía sobre cómo personalizar extractos de WordPress (sin necesidad de código).

22. Agregar un usuario administrador en WordPress

Si has olvidado tu contraseña y correo electrónico de WordPress, puedes agregar un usuario administrador añadiendo este código al archivo functions de tu tema usando un cliente FTP:

function wpb_admin_account(){
$user = 'Username';
$pass = 'Password';
$email = 'email@domain.com';
if ( !username_exists( $user )  && !email_exists( $email ) ) {
$user_id = wp_create_user( $user, $pass, $email );
$user = new WP_User( $user_id );
$user->set_role( 'administrator' );
} }
add_action('init','wpb_admin_account');

No olvides completar los campos de nombre de usuario, contraseña y correo electrónico.

Importante: Una vez que inicies sesión en tu sitio de WordPress, no olvides eliminar el código del archivo functions.

Para más información sobre este tema, consulta nuestro tutorial sobre cómo agregar un usuario administrador en WordPress usando FTP.

23. Desactivar el selector de idioma en la página de inicio de sesión

Si administras un sitio web multilingüe, WordPress muestra un selector de idioma en la página de inicio de sesión. Puedes desactivarlo fácilmente añadiendo el siguiente código a tu archivo functions.php o como un nuevo fragmento de WPCode:

add_filter( 'login_display_language_dropdown', '__return_false' );

24. Mostrar el número total de usuarios registrados en WordPress

¿Quieres mostrar el número total de usuarios registrados en tu sitio de WordPress? Simplemente añade este código al archivo functions de tu tema o como un nuevo fragmento de WPCode:

function wpb_user_count() {
$usercount = count_users();
$result = $usercount['total_users'];
return $result;
}
// Creating a shortcode to display user count
add_shortcode('user_count', 'wpb_user_count');

Este código crea un shortcode que te permite mostrar el número total de usuarios registrados en tu sitio.

Ahora, solo necesitas añadir el shortcode [user_count] a tu publicación o página donde quieras mostrar el número total de usuarios.

Para más información y un método de plugin, consulta nuestro tutorial sobre cómo mostrar el número total de usuarios registrados en WordPress.

25. Excluir categorías específicas del feed RSS

¿Quieres excluir categorías específicas de tu feed RSS de WordPress? Puedes agregar este código al archivo functions de tu tema o como un nuevo fragmento de WPCode:

function exclude_category($query) {
	if ( $query->is_feed ) {
		$query->set('cat', '-5, -2, -3');
	}
return $query;
}
add_filter('pre_get_posts', 'exclude_category');

26. Deshabilitar enlaces de URL en comentarios de WordPress

Por defecto, WordPress convierte una URL en un enlace clickeable en los comentarios.

Puedes detener esto agregando el siguiente código a tu archivo functions o como un nuevo fragmento de WPCode:

remove_filter( 'comment_text', 'make_clickable', 9 );

Para más detalles, consulta nuestro artículo sobre cómo deshabilitar el autolink en comentarios de WordPress.

27. Agregar clases CSS impar y par a las publicaciones de WordPress

Es posible que hayas visto temas de WordPress que usan una clase impar o par para los comentarios de WordPress. Ayuda a los usuarios a visualizar dónde termina un comentario y comienza el siguiente.

Puedes usar la misma técnica para tus publicaciones de WordPress. Se ve estéticamente agradable y ayuda a los usuarios a escanear rápidamente páginas con mucho contenido.

Simplemente agrega este código al archivo functions de tu tema:

function oddeven_post_class ( $classes ) {
   global $current_class;
   $classes[] = $current_class;
   $current_class = ($current_class == 'odd') ? 'even' : 'odd';
   return $classes;
}
add_filter ( 'post_class' , 'oddeven_post_class' );
global $current_class;
$current_class = 'odd';

Este código simplemente agrega una clase impar o par a las publicaciones de WordPress. Ahora puedes agregar CSS personalizado para darles un estilo diferente.

Aquí tienes un código de ejemplo para ayudarte a empezar:

.even {
background:#f0f8ff;
}
.odd {
 background:#f4f4fb;
}

El resultado final se verá algo así:

Colores de fondo alternos

¿Necesitas instrucciones más detalladas? Echa un vistazo a nuestro tutorial sobre cómo agregar clases impar/par a tus publicaciones en temas de WordPress.

28. Agregar tipos de archivo adicionales para subir en WordPress

Por defecto, WordPress te permite subir un número limitado de los tipos de archivo más comunes. Sin embargo, puedes extenderlo para permitir otros tipos de archivo.

Simplemente agrega este código al archivo functions de tu tema:

function my_myme_types($mime_types){
    $mime_types['svg'] = 'image/svg+xml'; //Adding svg extension
    $mime_types['psd'] = 'image/vnd.adobe.photoshop'; //Adding photoshop files
    return $mime_types;
}
add_filter('upload_mimes', 'my_myme_types', 1, 1);

Este código te permite subir archivos SVG y PSD a WordPress.

Necesitarás encontrar los tipos MIME para los tipos de archivo que deseas permitir y luego usarlos en el código.

Para más información sobre este tema, consulta nuestro tutorial sobre cómo agregar tipos de archivo adicionales para subir en WordPress.

WordPress utiliza una dirección de correo electrónico inexistente (wordpress@tudominio.com) para enviar correos salientes por defecto.

Esta dirección de correo electrónico podría ser marcada como spam por los proveedores de servicios de correo electrónico.

Usar el plugin WP Mail SMTP es la forma correcta de solucionar esto.

WP Mail SMTP

Soluciona problemas de entregabilidad de correos y te permite elegir una dirección de correo electrónico real para enviar tus correos de WordPress.

Para saber más, consulta nuestra guía sobre cómo solucionar el problema de que WordPress no envía correos.

Por otro lado, si deseas cambiar esto rápidamente a una dirección de correo electrónico real, puedes agregar el siguiente código en tu archivo de funciones o como un nuevo fragmento de WPCode:

// Function to change email address
function wpb_sender_email( $original_email_address ) {
    return 'tim.smith@example.com';
}
 
// Function to change sender name
function wpb_sender_name( $original_email_from ) {
    return 'Tim Smith';
}
 
// Hooking up our functions to WordPress filters 
add_filter( 'wp_mail_from', 'wpb_sender_email' );
add_filter( 'wp_mail_from_name', 'wpb_sender_name' );

No olvides reemplazar la dirección de correo electrónico y el nombre con tu propia información.

El problema con este método es que WordPress todavía está usando la función mail() para enviar correos, y es muy probable que dichos correos terminen en spam.

Para mejores alternativas, consulta nuestro tutorial sobre cómo cambiar el nombre del remitente en correos salientes de WordPress.

30. Agregar una caja de información del autor en las publicaciones de WordPress

Si administras un sitio con múltiples autores y quieres mostrar biografías de autores al final de tus publicaciones, puedes probar este método.

Comienza agregando este código a tu archivo functions o como un nuevo fragmento de WPCode:

function wpb_author_info_box( $content ) {

global $post;

// Detect if it is a single post with a post author
if ( is_single() && isset( $post->post_author ) ) {

// Get author's display name
$display_name = get_the_author_meta( 'display_name', $post->post_author );

// If display name is not available then use nickname as display name
if ( empty( $display_name ) )
$display_name = get_the_author_meta( 'nickname', $post->post_author );

// Get author's biographical information or description
$user_description = get_the_author_meta( 'user_description', $post->post_author );

// Get author's website URL
$user_website = get_the_author_meta('url', $post->post_author);

// Get link to the author archive page
$user_posts = get_author_posts_url( get_the_author_meta( 'ID' , $post->post_author));
	
// Get User Gravatar
$user_gravatar =  get_avatar( get_the_author_meta( 'ID' , $post->post_author) , 90 );

if ( ! empty( $display_name ) )

$author_details = '<p class="author_name">About ' . $display_name . '</p>';

if ( ! empty( $user_description ) )
// Author avatar and bio will be displayed if author has filled in description. 

$author_details .= '<p class="author_details">' . $user_gravatar . nl2br( $user_description ). '</p>';

$author_details .= '<p class="author_links"><a href="'. $user_posts .'">View all posts by ' . $display_name . '</a>';  

// Check if author has a website in their profile
if ( ! empty( $user_website ) ) {

// Display author website link
$author_details .= ' | <a href="' . $user_website .'" target="_blank" rel="nofollow noopener">Website</a></p>';

} else {
// if there is no author website then just close the paragraph
$author_details .= '</p>';
}

// Pass all this info to post content
$content = $content . '<footer class="author_bio_section" >' . $author_details . '</footer>';
}
return $content;
}

// Add our function to the post content filter
add_action( 'the_content', 'wpb_author_info_box' );

// Allow HTML in author bio section
remove_filter('pre_user_description', 'wp_filter_kses');

A continuación, necesitarás agregar algo de CSS personalizado para que se vea mejor.

Puedes usar este CSS de ejemplo como punto de partida:

.author_bio_section{
background: none repeat scroll 0 0 #F5F5F5;
padding: 15px;
border: 1px solid #ccc;
}

.author_name{
font-size:16px;
font-weight: bold;
}

.author_details img {
border: 1px solid #D8D8D8;
border-radius: 50%;
float: left;
margin: 0 10px 10px 0;
}

Así es como se verá tu cuadro de autor:

Caja de biografía del autor

Para un método con plugin e instrucciones más detalladas, consulta nuestro artículo sobre cómo agregar un cuadro de información del autor en publicaciones de WordPress.

31. Desactivar XML-RPC en WordPress

XML-RPC es un método que permite que aplicaciones de terceros se comuniquen con tu sitio de WordPress de forma remota. Esto podría causar problemas de seguridad y ser explotado por hackers.

Para desactivar XML-RPC en WordPress, agrega el siguiente código a tu archivo functions o como un nuevo fragmento de WPCode:

add_filter('xmlrpc_enabled', '__return_false');

Es posible que desees leer nuestro artículo sobre cómo desactivar XML-RPC en WordPress para obtener más información.

32. Vincular automáticamente imágenes destacadas a las publicaciones

Si tu tema de WordPress no vincula automáticamente las imágenes destacadas a los artículos completos, puedes probar este método.

Simplemente agrega este código al archivo functions de tu tema o como un nuevo fragmento de WPCode:

function wpb_autolink_featured_images( $html, $post_id, $post_image_id ) {

If (! is_singular()) { 

$html = '<a href="' . get_permalink( $post_id ) . '" title="' . esc_attr( get_the_title( $post_id ) ) . '">' . $html . '</a>';
return $html;

} else { 

return $html;

}

}
add_filter( 'post_thumbnail_html', 'wpb_autolink_featured_images', 10, 3 );

Quizás quieras leer nuestro artículo sobre cómo enlazar automáticamente las imágenes destacadas a las entradas en WordPress.

33. Desactivar el Editor de Bloques en WordPress

WordPress utiliza un editor moderno e intuitivo para escribir contenido y editar tu sitio web. Este editor usa bloques para elementos de contenido y diseño de uso común, por eso se llama Editor de Bloques.

Sin embargo, es posible que necesites usar el Editor Clásico anterior en algunos casos.

La forma más fácil de deshabilitar el editor de bloques es usando el plugin Classic Editor. Sin embargo, si no quieres usar un plugin separado, simplemente agrega el siguiente código a tu archivo functions o como un nuevo fragmento de WPCode:

add_filter('gutenberg_can_edit_post', '__return_false', 5);
add_filter('use_block_editor_for_post', '__return_false', 5);

Para más detalles, consulta nuestro tutorial sobre cómo deshabilitar el Editor de Bloques y usar el Editor Clásico.

34. Deshabilitar Widgets de Bloques en WordPress

WordPress cambió de widgets clásicos a widgets de bloques en WordPress 5.8. Los nuevos widgets de bloques son más fáciles de usar y te dan más control de diseño que los widgets clásicos.

Sin embargo, algunos usuarios aún pueden querer usar widgets clásicos. En ese caso, puedes usar el siguiente código en el archivo functions de tu tema o como un nuevo fragmento de WPCode:

add_filter( 'use_widgets_block_editor', '__return_false' );

Para más detalles, consulta nuestro artículo sobre cómo deshabilitar los bloques de widgets (restaurar widgets clásicos).

35. Mostrar la Fecha de Última Actualización en WordPress

Cuando los visitantes ven una publicación o página en tu blog de WordPress, tu tema de WordPress mostrará la fecha en que se publicó la entrada. Esto está bien para la mayoría de los blogs y sitios web estáticos.

Sin embargo, WordPress también es utilizado por sitios web donde los artículos antiguos se actualizan regularmente. En estas publicaciones, mostrar la fecha y hora en que la entrada fue modificada por última vez es esencial.

Fecha de última actualización

Puedes mostrar la fecha de última actualización usando el siguiente código en el archivo functions de tu tema o como un nuevo fragmento de WPCode:

$u_time          = get_the_time( 'U' );
$u_modified_time = get_the_modified_time( 'U' );
// Only display modified date if 24hrs have passed since the post was published.
if ( $u_modified_time >= $u_time + 86400 ) {

	$updated_date = get_the_modified_time( 'F jS, Y' );
	$updated_time = get_the_modified_time( 'h:i a' );

	$updated = '<p class="last-updated">';

	$updated .= sprintf(
	// Translators: Placeholders get replaced with the date and time when the post was modified.
		esc_html__( 'Last updated on %1$s at %2$s' ),
		$updated_date,
		$updated_time
	);
	$updated .= '</p>';

	echo wp_kses_post( $updated );
}

Para métodos alternativos y más detalles, consulta nuestra guía sobre cómo mostrar la fecha de última actualización en WordPress.

36. Usa nombres de archivo en minúsculas para las subidas

Si administras un sitio web con varios autores, es posible que los autores suban imágenes con nombres de archivo en mayúsculas y minúsculas.

Agregar el siguiente código asegura que todos los nombres de archivo estén en minúsculas:

add_filter( 'sanitize_file_name', 'mb_strtolower' );

Nota: El código no cambiará los nombres de archivo de las subidas existentes. Para métodos alternativos, consulta nuestro tutorial sobre cómo renombrar imágenes y archivos multimedia en WordPress.

37. Desactivar la barra de administración de WordPress en el frontend

Por defecto, WordPress muestra la barra de administración en la parte superior cuando un usuario conectado ve tu sitio web.

Puedes desactivar la barra de administración para todos los usuarios excepto para los administradores del sitio. Simplemente agrega el siguiente código a tu archivo functions o como un nuevo fragmento de WPCode:

/* Disable WordPress Admin Bar for all users */
add_filter( 'show_admin_bar', '__return_false' );

Para más detalles, consulta nuestra guía sobre cómo desactivar la barra de administración de WordPress para todos los usuarios excepto administradores.

38. Cambiar el texto 'Howdy Admin' en el área de administración

WordPress muestra un saludo de 'Howdy Admin' en el panel de WordPress. 'Admin' se reemplaza por el nombre del usuario conectado.

Saludo "Howdy"

Puedes cambiar el saludo predeterminado por el tuyo agregando el siguiente código en tu archivo functions o como un nuevo fragmento de WPCode:

function wpcode_snippet_replace_howdy( $wp_admin_bar ) {

	// Edit the line below to set what you want the admin bar to display intead of "Howdy,".
	$new_howdy = 'Welcome,';

	$my_account = $wp_admin_bar->get_node( 'my-account' );
	$wp_admin_bar->add_node(
		array(
			'id'    => 'my-account',
			'title' => str_replace( 'Howdy,', $new_howdy, $my_account->title ),
		)
	);
}

add_filter( 'admin_bar_menu', 'wpcode_snippet_replace_howdy', 25 );

Para más detalles, consulta nuestro artículo sobre cómo cambiar el mensaje 'Howdy Admin' en WordPress.

39. Deshabilitar edición de código en el editor de bloques

El editor de bloques te permite cambiar al Editor de Código. Esto es útil si necesitas agregar código HTML manualmente.

Sin embargo, es posible que desees limitar esta función a los administradores del sitio.

Puedes agregar el siguiente código a tu archivo functions o como un fragmento de WPCode para lograr esto:

add_filter( 'block_editor_settings_all', function ( $settings ) {
	
	$settings['codeEditingEnabled'] = current_user_can( 'manage_options' );

	return $settings;
} );

40. Deshabilitar editor de archivos de plugins / temas

WordPress viene con un editor integrado donde puedes editar archivos de plugins. Puedes verlo yendo a la página Plugins » Editor de archivos de plugins.

Editor de archivos de plugins en WordPress

De manera similar, WordPress también incluye un editor de archivos para temas clásicos en Apariencia » Editor de Archivos del Tema.

Nota: Si usas un tema de bloques, el editor de archivos del tema no será visible.

Editor de archivos del tema

No recomendamos usar estos editores para hacer cambios en tu tema o plugin. Un pequeño error en el código puede hacer que tu sitio web sea inaccesible para todos los usuarios.

Para deshabilitar el editor de plugins/temas, agrega el siguiente código a tu archivo functions o como un fragmento de WPCode:

// Disable the Plugin and Theme Editor
if ( ! defined( 'DISALLOW_FILE_EDIT' ) ) {
	define( 'DISALLOW_FILE_EDIT', true );
}

Para más detalles, consulta nuestro tutorial sobre cómo deshabilitar el editor de plugins/temas en WordPress.

41. Deshabilitar correos electrónicos de notificación de nuevos usuarios

Por defecto, WordPress envía una notificación por correo electrónico cuando un nuevo usuario se une a tu sitio web de WordPress.

Si administras un sitio web de membresía de WordPress o requieres que los usuarios se registren, recibirás una notificación cada vez que un usuario se una a tu sitio web.

Para desactivar estas notificaciones, puedes agregar lo siguiente a tu archivo functions o como un nuevo fragmento de WPCode:

function wpcode_send_new_user_notifications( $user_id, $notify = 'user' ) {
	if ( empty( $notify ) || 'admin' === $notify ) {
		return;
	} elseif ( 'both' === $notify ) {
		// Send new users the email but not the admin.
		$notify = 'user';
	}
	wp_send_new_user_notifications( $user_id, $notify );
}

add_action(
	'init',
	function () {
		// Disable default email notifications.
		remove_action( 'register_new_user', 'wp_send_new_user_notifications' );
		remove_action( 'edit_user_created_user', 'wp_send_new_user_notifications' );

		// Replace with custom function that only sends to user.
		add_action( 'register_new_user', 'wpcode_send_new_user_notifications' );
		add_action( 'edit_user_created_user', 'wpcode_send_new_user_notifications', 10, 2 );
	}
);

Para más detalles, consulta nuestro tutorial sobre cómo deshabilitar las notificaciones por correo electrónico de nuevos usuarios en WordPress.

42. Deshabilitar notificaciones por correo electrónico de actualizaciones automáticas

Ocasionalmente, WordPress puede instalar automáticamente actualizaciones de seguridad y mantenimiento o actualizar un plugin con una vulnerabilidad crítica.

Envía una notificación automática por correo electrónico después de cada actualización. Si administras varios sitios web de WordPress, podrías recibir varios correos de este tipo.

Puedes agregar este código a tu archivo functions o como un nuevo fragmento de WPCode para desactivar estas notificaciones por correo electrónico:

/ Disable auto-update emails.
add_filter( 'auto_core_update_send_email', '__return_false' );

// Disable auto-update emails for plugins.
add_filter( 'auto_plugin_update_send_email', '__return_false' );

// Disable auto-update emails for themes.
add_filter( 'auto_theme_update_send_email', '__return_false' );

Para obtener más información, consulta nuestro artículo sobre cómo deshabilitar los correos electrónicos de actualización automática en WordPress.

43. Añadir un enlace para duplicar fácilmente una entrada

¿Alguna vez has deseado una forma más fácil de copiar rápidamente todo el contenido de una entrada para editarla sin tocar la entrada publicada?

El siguiente fragmento de código añadirá una opción para duplicar fácilmente una entrada con todo su contenido:

// Add duplicate button to post/page list of actions.
add_filter( 'post_row_actions', 'wpcode_snippet_duplicate_post_link', 10, 2 );
add_filter( 'page_row_actions', 'wpcode_snippet_duplicate_post_link', 10, 2 );

// Let's make sure the function doesn't already exist.
if ( ! function_exists( 'wpcode_snippet_duplicate_post_link' ) ) {
	/**
	 * @param array   $actions The actions added as links to the admin.
	 * @param WP_Post $post The post object.
	 *
	 * @return array
	 */
	function wpcode_snippet_duplicate_post_link( $actions, $post ) {

		// Don't add action if the current user can't create posts of this post type.
		$post_type_object = get_post_type_object( $post->post_type );

		if ( null === $post_type_object || ! current_user_can( $post_type_object->cap->create_posts ) ) {
			return $actions;
		}


		$url = wp_nonce_url(
			add_query_arg(
				array(
					'action'  => 'wpcode_snippet_duplicate_post',
					'post_id' => $post->ID,
				),
				'admin.php'
			),
			'wpcode_duplicate_post_' . $post->ID,
			'wpcode_duplicate_nonce'
		);

		$actions['wpcode_duplicate'] = '<a href="' . $url . '" title="Duplicate item" rel="permalink">Duplicate</a>';

		return $actions;
	}
}

/**
 * Handle the custom action when clicking the button we added above.
 */
add_action( 'admin_action_wpcode_snippet_duplicate_post', function () {

	if ( empty( $_GET['post_id'] ) ) {
		wp_die( 'No post id set for the duplicate action.' );
	}

	$post_id = absint( $_GET['post_id'] );

	// Check the nonce specific to the post we are duplicating.
	if ( ! isset( $_GET['wpcode_duplicate_nonce'] ) || ! wp_verify_nonce( $_GET['wpcode_duplicate_nonce'], 'wpcode_duplicate_post_' . $post_id ) ) {
		// Display a message if the nonce is invalid, may it expired.
		wp_die( 'The link you followed has expired, please try again.' );
	}

	// Load the post we want to duplicate.
	$post = get_post( $post_id );

	// Create a new post data array from the post loaded.
	if ( $post ) {
		$current_user = wp_get_current_user();
		$new_post     = array(
			'comment_status' => $post->comment_status,
			'menu_order'     => $post->menu_order,
			'ping_status'    => $post->ping_status,
			'post_author'    => $current_user->ID,
			'post_content'   => $post->post_content,
			'post_excerpt'   => $post->post_excerpt,
			'post_name'      => $post->post_name,
			'post_parent'    => $post->post_parent,
			'post_password'  => $post->post_password,
			'post_status'    => 'draft',
			'post_title'     => $post->post_title . ' (copy)',// Add "(copy)" to the title.
			'post_type'      => $post->post_type,
			'to_ping'        => $post->to_ping,
		);
		// Create the new post
		$duplicate_id = wp_insert_post( $new_post );
		// Copy the taxonomy terms.
		$taxonomies = get_object_taxonomies( get_post_type( $post ) );
		if ( $taxonomies ) {
			foreach ( $taxonomies as $taxonomy ) {
				$post_terms = wp_get_object_terms( $post_id, $taxonomy, array( 'fields' => 'slugs' ) );
				wp_set_object_terms( $duplicate_id, $post_terms, $taxonomy );
			}
		}
		// Copy all the custom fields.
		$post_meta = get_post_meta( $post_id );
		if ( $post_meta ) {

			foreach ( $post_meta as $meta_key => $meta_values ) {
				if ( '_wp_old_slug' === $meta_key ) { // skip old slug.
					continue;
				}
				foreach ( $meta_values as $meta_value ) {
					add_post_meta( $duplicate_id, $meta_key, $meta_value );
				}
			}
		}

		// Redirect to edit the new post.
		wp_safe_redirect(
			add_query_arg(
				array(
					'action' => 'edit',
					'post'   => $duplicate_id
				),
				admin_url( 'post.php' )
			)
		);
		exit;
	} else {
		wp_die( 'Error loading post for duplication, please try again.' );
	}
} );

Después de añadir el código, ve a la pantalla Entradas » Todas las entradas y pasa el ratón sobre el título de una entrada.

Notarás un nuevo enlace 'Duplicar' debajo de las opciones.

Enlace para duplicar publicación

Hacer clic en el enlace creará una copia de la entrada con todo su contenido. Luego podrás trabajar en ese borrador.

Una vez terminado, puedes copiar y pegar tus cambios en la entrada publicada original y eliminar la copia.

Para un método con plugin, consulta nuestro artículo sobre duplicar una entrada o página de WordPress.

44. Eliminar el panel de bienvenida del panel de administración de WordPress

El panel de bienvenida aparece en el panel de administración de WordPress. Se puede descartar o ocultar fácilmente haciendo clic en el botón 'Opciones de pantalla'.

Panel de bienvenida

Sin embargo, si estás trabajando para ofrecer una experiencia de panel más limpia a los usuarios, es posible que desees ocultarlo permanentemente.

Añade el siguiente código para deshabilitarlo para todos los usuarios de tu sitio:

add_action(
	'admin_init',
	function () {
		remove_action( 'welcome_panel', 'wp_welcome_panel' );
	}
);

45. Añadir una columna de imagen destacada para las entradas en el administrador de WordPress

Por defecto, WordPress solo muestra las imágenes destacadas cuando visitas tu sitio o cuando editas una entrada o página.

El siguiente código añadirá una nueva columna a la pantalla Entradas » Todas las entradas para las imágenes destacadas:

add_filter( 'manage_posts_columns', function ( $columns ) {
	// You can change this to any other position by changing 'title' to the name of the column you want to put it after.
	$move_after     = 'title';
	$move_after_key = array_search( $move_after, array_keys( $columns ), true );

	$first_columns = array_slice( $columns, 0, $move_after_key + 1 );
	$last_columns  = array_slice( $columns, $move_after_key + 1 );

	return array_merge(
		$first_columns,
		array(
			'featured_image' => __( 'Featured Image' ),
		),
		$last_columns
	);
} );

add_action( 'manage_posts_custom_column', function ( $column ) {
	if ( 'featured_image' === $column ) {
		the_post_thumbnail( array( 300, 80 ) );
	}
} );

Así es como se vería después de agregar el código.

Columna de imagen destacada

46. Bloquear el área de administración de WordPress para todos excepto los administradores

Algunos sitios web de WordPress pueden requerir que los usuarios registren una cuenta. Por ejemplo, un sitio de membresía de WordPress o una tienda de comercio electrónico.

La mayoría de estos complementos evitarán que esos usuarios accedan al área de administración. Sin embargo, si no estás utilizando un complemento de este tipo, puedes agregar el siguiente código para bloquear a todos los usuarios, excepto a los administradores, de acceder al área de administración:

add_action( 'admin_init', function() {
	if ( ! current_user_can( 'administrator' ) ) {
       wp_redirect( home_url() );
       exit;
	}
} );

Los usuarios con otros roles de usuario aún pueden iniciar sesión en sus cuentas, pero después de iniciar sesión, serán redirigidos a la página de inicio.

Esperamos que este artículo te haya ayudado a aprender algunos trucos útiles nuevos para el archivo functions.php en WordPress. También te puede interesar nuestra guía sobre cómo mostrar código en WordPress para compartir tus fragmentos fácilmente y nuestras selecciones expertas de los mejores editores de código para Mac y Windows.

Si te gustó este artículo, suscríbete a nuestro canal de YouTube para obtener tutoriales en video de WordPress. También puedes encontrarnos en Twitter y Facebook.

Descargo de responsabilidad: Nuestro contenido es compatible con el lector. Esto significa que si haces clic en algunos de nuestros enlaces, podemos ganar una comisión. Consulta cómo se financia WPBeginner, por qué es importante y cómo puedes apoyarnos. Aquí está nuestro proceso editorial.

El Kit de herramientas definitivo para WordPress

Obtén acceso GRATUITO a nuestro kit de herramientas: ¡una colección de productos y recursos relacionados con WordPress que todo profesional debería tener!

Interacciones del lector

122 CommentsLeave a Reply

  1. Gracias por el útil artículo. Realmente lo aprecio. ¿Podrías explicar por qué el fragmento para agregar el código de Google Analytics (#1) incluye las declaraciones de php? Si tengo un archivo functions.php existente que ya está definido con , ¿necesito incluir las marcas de nuevamente en el fragmento? Estoy tratando de agregar otras personalizaciones a functions.php y se está volviendo difícil de seguir.

  2. El de la fecha de copyright parece un poco exagerado cuando simplemente podrías copiar y pegar © 2006- y haría exactamente el mismo trabajo, solo reemplaza 2006 con la fecha de inicio estática que desees. ¿O me estoy perdiendo algo?

  3. Excelente, había terminado con mi tema y aprendizaje, pero quedaba mucho. Esta publicación me salvó el día y, por supuesto, aprendí muchas cosas también.

    ¡Mis mejores deseos!

  4. Gran conjunto de herramientas. Inmediatamente copié la función de autor invitado al verla y ahora deshabilitaré un plugin torpe que he estado usando. ¿Tienes una función que proporcione el ID de la publicación del elemento con el que se está trabajando en el editor? Estoy tratando de autocompletar un formulario con archivos adjuntos multimedia para la publicación actual, pero solo he podido hacer que funcione en un meta-box personalizado, pero no en un thickbox. El thickbox devuelve todos los archivos multimedia de todas las publicaciones cuando solo quiero los archivos adjuntos de la publicación actual.

  5. ¡Gracias por los excelentes consejos de Wordpress! ¿Esperaba que pudieras ayudarme con uno adicional?

    Me gustaría evitar que mis etiquetas/categorías se extiendan a otra línea limitando el número de etiquetas/categorías que aparecen en el pie de página de las publicaciones de mi página de inicio individual. ¿Es posible hacer esto con el “the_excerpt”? También me gustaría que el extracto fuera un enlace de “…leer más” y limitar el número de caracteres en él. Aquí está el código al que necesitaría agregarse;

    $tags_list = get_the_tag_list( ”, __( ‘, ‘, ‘mummyblog’ ) ); if ( $tags_list ): ?> <li> <?php printf( __( ‘<span class=”%1$s”>Etiquetado</span> %2$s’, ‘mummyblog’ ), ‘entry-utility-prep entry-utility-prep-tag-links’, $tags_list ); ?> </li> <?php endif; // Fin si $tags_list ?>

    ¡Gracias!

  6. Como todos los demás han dicho abajo, simplemente demasiado bueno, una gran ayuda para un novato y muy útil para aprender también. Gran sitio en general. Gracias.

  7. uno de los mejores tutoriales que he leído. Muchos temas importantes señalados y seguro que no conocía la mayoría de ellos ya que acabo de empezar con el diseño personalizado de WordPress.

  8. Este artículo es infinitamente útil. Lo guardé en marcadores y a menudo lo consulto al actualizar mi tema o al intentar responder una pregunta. ¡Gran trabajo!

  9. Chavos, son geniales. ¿Saben qué? wpbegineer es el primer sitio web para el que tengo una carpeta separada en mi menú de marcadores. Demasiado bueno para un principiante de WordPress. Su nombre encaja con su personalidad. Jajaja. Un día haré algo especial por ustedes. Si Dios quiere.
    El único problema que tengo es con las publicaciones relacionadas con miniaturas. Sus codificadores no están funcionando. No sé qué hacer. De todos modos, sigan con el trabajo maravilloso. Me encanta el sitio wpbegineer.

  10. ¡Gran publicación! Obviamente sabes mucho sobre codificación de WordPress, así que espero que puedas responder una pregunta. ¿Cómo eliminas la marca de fecha y hora de un feed RSS de WordPress? He buscado por todas partes y no encuentro información al respecto. Estoy trabajando en un "sitio" de WordPress y no necesito las fechas. Ya las he eliminado de las publicaciones y páginas.

    ¡Muchas gracias de antemano!

    • La fecha NO es opcional para los feeds RSS. Es OBLIGATORIA porque así es como se organizan las publicaciones/artículos (orden cronológico inverso). Puedes eliminar la visualización de las fechas de la plantilla, pero no puedes eliminarlas del XML.

      Administrador

  11. Solo una nota, ten cuidado al copiar y pegar la función “fin de extracto”. Mostró un signo de interrogación en lugar de “…” ya que era un carácter. Tuve que reescribir “…” para que apareciera.

  12. Sugeriría que se agregara un apéndice al Consejo #3 mencionando el hecho de que esto no es seguridad de ninguna manera, forma o manera, y definitivamente no es una alternativa a la actualización como la gente debería.

    Ocultar el número de versión solo beneficia a aquellos de nosotros a quienes nos gusta mantener basura innecesaria fuera del HEAD de su documento HTML. Fuera de eso, no tiene ningún propósito y no debe confundirse con seguridad; para ilustrar ese punto: http://dd32.id.au/2010/07/31/what-version-of-wordpress-is-behind-that-website/

  13. ¿Podrías decirme si necesito agregar estos códigos para cada tema que tenga mi multisitio? ¿Hay alguna otra forma en que estos códigos se apliquen automáticamente a los temas recién agregados?

    ¡Gracias!

    • Tendrías que agregarlos al archivo functions.php de tu tema. Entonces, si es un tema que está disponible en todas las redes, solo una vez. Si hay temas personalizados que se usan en cada sitio de la red, tendrías que hacerlo en cada uno...

      Administrador

  14. De acuerdo, la fecha de derechos de autor dinámica en el pie de página es uno de los trucos más geniales para WordPress que he encontrado. Siempre odio tener que hacer eso cada año, pero ya no. ¡Gracias por compartir ese!

  15. Hola, estoy intentando cambiar el gravatar predeterminado. La opción para elegir mi nuevo gravatar aparece, pero en lugar de mi foto para mi gravatar, se muestra un enlace de imagen roto. Sé que la ruta funciona porque sí lo hace cuando la ingreso en el navegador, la imagen aparece. También he probado .gif, .png, .jpg y todas están rotas. Además, está dimensionada según mi tema a 48px X 48px. ¿Puedes ayudarme?

  16. Hay algunas buenas sugerencias aquí. La implementación podría mejorarse para algunas de ellas.

    Por ejemplo, en el #8 – Copyright Dinámico, probablemente sería mejor llamar a la función durante las acciones de publish_page y publish_post. Luego, en lugar de imprimir el año en la pantalla, el valor (rango de años) podría almacenarse en la tabla de opciones (con update_option()). En el tema, harías algo como: echo get_option( ‘comicpress_copyright’, date( ‘Y’ ) );. Esto daría el año actual como fecha predeterminada, o tu rango preestablecido. La ventaja aquí es que eliminas la necesidad constante de consultar la base de datos para los años durante cada carga de página (ya que get_option se puede configurar para cargarse automáticamente con el resto de las opciones). WordPress ya puede ser pesado en consultas a la base de datos, ¡no hay necesidad de agregar una adicional si se puede evitar!

    #18 – Eliminar errores de inicio de sesión está eliminando *todos* los errores de inicio de sesión, lo cual podría ser malo porque también omite avisos sobre cookies deshabilitadas, etc. Un enfoque más efectivo sería que la función devuelva:

    str_replace( array( ‘Invalid username’, ‘Incorrect password’ ), ‘Invalid username or password’, $str );

    Esto mantiene al usuario informado de posibles errores mientras ofusca en qué campo ocurrió realmente el error. Algo a tener en cuenta es que si el nombre de usuario es correcto, WordPress autocompletará ese campo en intentos de inicio de sesión posteriores. Un hacker consciente del funcionamiento de WordPress sabría entonces que el nombre de usuario era válido. Puedes evitar esto comentando la sección apropiada en el archivo wp-login.php (líneas 529-530 en la versión 2.9.2) – no es ideal, lo sé, pero no hay ganchos en ese punto del código.

    Buenos consejos. Me gusta la demostración de Miniaturas de Publicación.

  17. aquí hay uno para cambiar el logo de inicio de sesión:

    function the_custom_login_logo() { echo '
    h1 a { background-image:url(' . get_bloginfo('template_directory') . '/images/custom-login-logo.gif) !important; } '; }

    add_action(‘login_head’, ‘the_custom_login_logo’);

    • Asegúrate de cambiar las comillas simples en este código por comillas simples reales, ya que WP las elimina en los comentarios para que el código PHP no se ejecute. Mejor aún, vuelve a escribirlo y no tendrás ningún problema.

      ¡Salud!

  18. Hola,

    solo una actualización, en el punto 4. Agregar un logo personalizado para el panel, en WordPress 3 el "custom-logo.gif" ahora es una imagen .png.

    ¡¡¡¡Gran colección!!!!

  19. Brillante, pondré bastantes de estos en buen uso.

    Felicidades por el sitio, chicos, van de éxito en éxito, normalmente encuentro algo útil aquí.

    Sigan con el buen trabajo.

Deja una respuesta

Gracias por elegir dejar un comentario. Ten en cuenta que todos los comentarios son moderados de acuerdo con nuestra política de comentarios, y tu dirección de correo electrónico NO será publicada. Por favor, NO uses palabras clave en el campo del nombre. Tengamos una conversación personal y significativa.