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!

¿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!

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
- Eliminar el número de versión de WordPress
- Agregar un logo personalizado al panel de administración
- Cambiar el pie de página en el panel de administración de WordPress
- Agregar widgets personalizados al panel de administración en WordPress
- Cambiar el Gravatar predeterminado en WordPress
- Fecha de copyright dinámica en el pie de página de WordPress
- Cambiar aleatoriamente el color de fondo en WordPress
- Actualizar URL de WordPress
- Agregar tamaños de imagen adicionales en WordPress
- Agregar nuevos menús de navegación a tu tema
- Agregar campos de perfil de autor
- Agregar áreas listas para widgets o barras laterales en temas de WordPress
- Manipular el pie de página del feed RSS
- Agregar imágenes destacadas a los feeds RSS
- Ocultar errores de inicio de sesión en WordPress
- Deshabilitar inicio de sesión por correo electrónico en WordPress
- Deshabilitar función de búsqueda en WordPress
- Retrasar publicaciones en el feed RSS
- Cambiar texto de "Leer más" para extractos en WordPress
- Deshabilitar feeds RSS en WordPress
- Cambiar la longitud del extracto en WordPress
- Agregar un usuario administrador en WordPress
- Deshabilitar selector de idioma en la página de inicio de sesión
- Mostrar el número total de usuarios registrados en WordPress
- Excluir categorías específicas del feed RSS
- Deshabilitar enlaces URL en comentarios de WordPress
- Agregar clases CSS impar y par a las publicaciones de WordPress
- Agregar tipos de archivo adicionales para subir en WordPress
- Cambiar nombre del remitente en correos electrónicos de WordPress
- Agregar una caja de información del autor en las publicaciones de WordPress
- Deshabilita XML-RPC en WordPress
- Vincular automáticamente imágenes destacadas a las publicaciones
- Deshabilitar editor de bloques en WordPress
- Deshabilitar widgets de bloques en WordPress
- Mostrar la fecha de última actualización en WordPress
- Usar nombres de archivo en minúsculas para las cargas
- Deshabilitar barra de administración de WordPress en el frontend
- Cambiar texto de "Hola [usuario]" en el área de administración
- Deshabilitar edición de código en el editor de bloques
- Deshabilitar editor de archivos de plugins / temas
- Deshabilitar correos electrónicos de notificación de nuevos usuarios
- Deshabilitar notificaciones por correo electrónico de actualizaciones automáticas
- Agregar un enlace para duplicar fácilmente una publicación
- Eliminar panel de bienvenida del panel de administración de WordPress
- Agregar una columna de imagen destacada para publicaciones en el administrador de WordPress
- Bloquear el área de administración de WordPress para todos excepto los administradores
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.

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 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'.

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/.

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.
2. Agregar un logotipo personalizado al panel de control
¿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.

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:

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.

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.

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.

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.

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.

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.

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.

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í:

¿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.
29. Cambiar el nombre del remitente en los correos electrónicos de 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.

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:

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.

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.

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.

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.

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.

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'.

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.

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.

DANISH
such a great and useful tricks..
Marco
¡muchas gracias!
Webtechideas
Una buena lista de trucos útiles. Ayudará tanto a los desarrolladores de plugins como de temas.
ahmed
En el #14, ¿no es eso un en lugar de ?
Mick O
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.
Personal editorial
Incluye la apertura de php porque es la etiqueta de cierre de PHP para permitirte pegar código de Google Analytics en HTML plano.
Administrador
Luke Gibson
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?
Personal editorial
Sí, definitivamente puedes hacer eso. Pero si lo estás lanzando como parte de un tema destinado a la distribución, entonces no puedes hacerlo.
Administrador
Zeeshan Arshad
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!
DesignSkew
En "Agregar campos de perfil de autor", la función que mencionaste para mostrar no está funcionando.
Personal editorial
El curauth solo funcionaría si está en el archivo author.php.
Administrador
Mark
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.
mamá bloguera
¡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!
SteveEBoy
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.
LambrosPower
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.
Xiaozhuli
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!
Mohammad Yeasin
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.
AA
¡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!
Personal editorial
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
Michele Welch
Awesome post! Can’t wait to get started on the custom dashboard gravatar! Really exceptional post.
Phil
Gran artículo, lo he guardado para referencia futura. Acabo de encontrar wpbeginner por casualidad, ¡qué gran recurso, gracias!
wparena
es realmente bueno que hayas recopilado todas las cosas importantes en un solo lugar
Mark Welburn
Buen material, ya lo he guardado en marcadores. Puedo ver que algunos de estos se usarán más de una vez. Saludos, Mark.
Connor Crosby
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.
Martin
Probablemente la mejor publicación sobre el uso de functions.php. Gracias por los trucos y por ahorrarnos tiempo.
Huw Rowlands
¡Vaya! ¡Algunas cosas muy útiles ahí!
Gracias por compartir.
mark.
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/
ayudando
¿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!
Personal editorial
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
Connor Crosby
Muy buena lista. ¡No sabía que se podía hacer tanto con el archivo functions.php!
Andy
¡Ustedes son geniales! Gracias por la increíble publicación.
Saludos,
Andy
Jennifer R
gracias por estos trucos útiles
Marcelo Torres
Wow very good! Thanks for sharing
tarpontech
El mejor artículo de WordPress que he encontrado.
ddeja
Gracias por esos consejos. Algunos son nuevos para mí. Así que probablemente intentaré usarlos :)
Gracias de nuevo.
Chuck Reynolds
Desde el lanzamiento final de WP3, necesitas actualizar el #11 a
add_theme_support( ‘menus’ );
Personal editorial
Fixed thanks
Administrador
William
Gracias por la perspicaz publicación. Registrar widgets de barra lateral y personalizar el modo de extracto será útil. Saludos
Kate Mag
Gracias por compartir trucos extremadamente útiles. Antes no conocía algunos trucos, ¡ahora sí!
Adam
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!
Susan
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?
Susan
¡¡Finalmente lo logré!! Gracias por la increíble publicación, por cierto.
Dave Z
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.
Personal editorial
Thank you for your tips
Really appreciate it.
Administrador
Abdullah
Buena publicación... información muy útil.
Gracias wpbeginner por hacernos más profesionales en nuestro campo.
Saludos
Mohummad Abdullah
Zhu
¡Gracias por los consejos, ya implementé algunos (como el Gravatar personalizado) y funcionan muy bien!
Waheed Akhtar
Gran lista. Marcada para cualquier referencia en el futuro.
Sahus Pilwal
Gracias por los consejos extremadamente útiles. ¡Ojalá pudiera encontrar más artículos de trucos/hacks extremadamente útiles para WordPress!
Saludos, Sahus
patrick andrew adams
No puedo esperar a probar algunos de estos, todavía soy bastante nuevo en wp.
graphicbeacon
Pequeño problema con el NÚM. 14. El título del widget comienza con una etiqueta h2 y termina con un h3. No validaría bien, me parece.
Todd Santoro
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’);
Todd Santoro
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!
Kenton Bell
Estoy realmente impresionado con esta lista, mejores opciones que hackear los archivos del tema que se pierden en las actualizaciones. Gracias.
Raoni
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!!!!
Andris
Esa fue una publicación muy útil. Acabo de implementar "4. Agregar un logo personalizado para el panel" en mi sitio web.
Todd Santoro
Gran publicación. Ahora tengo esto en mi caja de herramientas de WP. Tiene todo lo que un diseñador de temas necesitaría en un solo artículo. ¡Gracias WPBeginner!
Jake Goldman
Great tips. Got a kick out of seeing a few of mine in there.
lots of new tips coming soon in my next article!
Personal editorial
Will keep my eyes open
Administrador
Tony
¡¡¡Por fin!!! Sé cómo curar el recuento incorrecto de comentarios. ¡Gracias, WPBeginner!
DaveK
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.