Categorías Programación Etiquetas , ,

Cinco funciones PHP simples y útiles para un sitio web hecho con WordPress

Al administrar un sitio web hecho con WordPress, es común recurrir a plugins para añadir funcionalidades. Sin embargo, muchos plugins pueden ser pesados y ralentizar la página. Una solución efectiva es utilizar funciones PHP directamente en el sitio web, lo que permite mantener el rendimiento sin sacrificar funcionalidad.

Maneras de insertar Funciones PHP en WordPress

Básicamente, existen dos métodos para insertar funciones PHP en WordPress. Una es editando los archivos del tema y la otra utilizando un plugin, nosotros recomendamos la versión  gratuita del Code Snippets, que es bastante completa e intutitiva.

Editando los archivos del tema: Esta es la manera más directa e implica escribir código sobre el archivo functions.php de tu tema activo. Quienes quieran prescindir de un plugin para insertar código allí, deben ir por este camino. Pero es importante mantener bien organizadas las funciones php que se añadan, preferentemente con comentarios para no perderse. Además, hay que tener cuidado al actualizar el tema, ya que podrían perderse los cambios al actualizar si no se está utilizando un child-theme.

Utilizando el plugin Code Snippets: Este plugin es el más popular para añadir fragmentos de código PHP sin necesidad de editar archivos del tema. La versión gratuita viene bastante completa y facilita la gestión de scripts, dado que nos permite tener cada función php por separado o guardar varias juntas si están relacionadas entre sí.

Dicho esto, dejamos a continuación 5 funciones PHP muy útiles para WordPress.

1. Ocultar la barra de tareas para usuarios de nivel suscriptor

Siempre es aconsejable que la barra de tareas de WordPress no se muestre a los usuarios registrados que no tienen alguna razón para utilizar la interfaz de administración. El rol «suscriptor» es el que se asigna por defecto a los usuarios nuevos. Y sus funciones son limitadas, pero la barra de tareas suele mostrarse de todos modos.

El siguiente fragmento de código permite ocultar la barra de tareas a los usuarios con el rol de suscriptor.

function hide_admin_bar_for_subscribers() {
    if ( current_user_can('subscriber') ) {
        add_filter('show_admin_bar', '__return_false');
    }
}
add_action('after_setup_theme', 'hide_admin_bar_for_subscribers');

La función comprueba si el usuario actual tiene el rol de suscriptor y, si es así, oculta la barra de tareas. Es posible cambiar subscriber por cualquier otro rol según sea necesario, aunque por razones obvias no es recomendable ocultarla para los usuarios administradores o editores.

2. Permitir la subida de imágenes en formato SVG

Algunos temas bloquean la subida de imágenes SVG por razones de seguridad. Sin embargo, los SVG son un tipo de archivo de imagen muy útil debido a su capacidad de escalabilidad sin pérdida de calidad. Para habilitar la subida a nuestro sitio web de este tipo de imagen podemos recurrir al siguiente fragmento de código.

function cc_mime_types($mimes) {
    $mimes['svg'] = 'image/svg+xml';
    return $mimes;
}
add_filter('upload_mimes', 'cc_mime_types');

Este fragmento añade el tipo MIME para SVG a la lista de tipos permitidos en WordPress, habilitando así la subida de archivos SVG.

3. Restricciones de caracteres en los títulos

Para mantener la coherencia en los títulos de tus publicaciones, a veces es recomendable usar restricciones de caracteres mínimos y máximos. La siguiente es una manera muy sencilla de hacerlo.

function custom_title_length() {
    $current_screen = get_current_screen();
    if ($current_screen->post_type === 'post') {
        echo "<script>
            jQuery(document).ready(function(){
                jQuery('#title').attr('minlength', '60');
                jQuery('#title').attr('maxlength', '78');
            });
        </script>";
    }
}
add_action('admin_head-post-new.php', 'custom_title_length');
add_action('admin_head-post.php', 'custom_title_length');

Esta función añade atributos de longitud mínima y máxima al campo de título en el editor de publicaciones. El código JavaScript se inserta en la cabecera de la página de edición de publicaciones. Se puede cambiar el número de caracteres mínimos y máximos, modificando el valor entre las comillas simples, luego de la coma de 'minlength' y 'maxlength'.

4. Indicador rojo de caracteres insuficientes

Una forma muy útil de complementar el código anterior es añadir un contador de caracteres que cambie de color si la cantidad mínima de caracteres se encuentra por debajo de la configurada. De esta manera, el redactor sabrá que todavía le faltan caracteres para llegar a la longitud mínima que debe tener el título.

function change_post_title_color() {
    ?>
    <style type="text/css">
        #title {
            color: black;
        }
    </style>
    <script type="text/javascript">
        jQuery(document).ready(function($) {
            $('#title').keyup(function() {
                var charCount = $(this).val().length;

                if (charCount > 60) {
                    $(this).css('color', 'black');
                } else {
                    $(this).css('color', 'crimson');
                }
            });
        });
    </script>
    <?php
}

add_action( 'admin_head-post.php', 'change_post_title_color' );
add_action( 'admin_head-post-new.php', 'change_post_title_color' );

Este código cambia el color del texto del título a negro si tiene más de 60 caracteres y a rojo si tiene menos, proporcionando una guía visual para los editores. Es importante que el valor de charCount coincida con el 'minlength' de la otra función.

5. Excluir páginas no deseadas de la búsqueda

Existen páginas o post que no queremos que sean accesibles desde la función de búsqueda de nuestro sitio web. Para esos casos, el asunto puede resolverse de manera muy simple.

function exclude_specific_posts_from_search( $query ) {
    if ( $query->is_search ) {
        $query->set( 'post__not_in', array( 12, 37, 131, 813 ) );
    }
}
add_action( 'pre_get_posts', 'exclude_specific_posts_from_search' );

Esta función excluye las páginas con los IDs especificados del array (12, 37, 131, 813) de los resultados de búsqueda. Las IDs son sólo un ejemplo. Es posible agregar o quitar IDs según las necesidades de cada usuario. Y para conocer la de una página o post específico, basta con revisar el número que aparece en la url de dicha entrada.

Por ejemplo, si la url es:

/wp-admin/post.php?post=4911&action=edit

Entonces la ID de la página es «4911».

Cinco casos donde un simple fragmento de código te puede ayudar a resolver problemas recurrentes de sitios web WordPress sin abusar de plugins.