Wordpress

Optimiza tu sitio web de WordPress

wordpress-optimization

WordPress ya es un gran software y si usas estos grandes plugins de WordPress, es que tu sistema está casi listo para producción. Después de que tu sitio web de WordPress esté terminado, debes hacer algunas optimizaciones en el código fuente HTML y tienes que manipular el comportamiento básico de algunas características. La siguiente lista contiene los ajustes que paso a la mayoría de los sitios web de WordPress que construyo desde cero.

La mayoría de las funciones que aparecen a continuación pertenecen al archivo functions.php de tu tema. Sólo tienes que añadirlas debajo de las otras modificaciones que has hecho antes. Si tu archivo functions.php ya está muy lleno, entonces crea un nuevo archivo para estas funciones e incluye este archivo usando una de las funciones de inclusión de PHP.

Ten cuidado con los widgets predeterminados de WordPress

Muchos widgets son menos flexibles y a veces un widget no es la función que necesitas. Si utilizas un widget por defecto, comprueba el código cuidadosamente, por ejemplo el «widget de categoría» muestra la descripción completa de la categoría para cada elemento de la lista dentro del atributo title. Si no puedes encontrar una gran alternativa usa este widget personalizado para tu sitio (coloca este código en tu archivo functions.php)

<?php 
/* Category Widget
 * A widget to show your blog's category names and links.
 */
 
add_action( 'widgets_init', 'mycategory_load_widgets' );
 
function mycategory_load_widgets() {
	register_widget( 'MyCategory_Widget' );
}
 
class MyCategory_Widget extends WP_Widget {
 
	function __construct() {
		parent::WP_Widget( 'category-widget', 'MyCategory_Widget', array( 'description' => 'A widget to show your blog\'s category names and links.' ) );
	}
 
	function widget( $args, $instance ) {
		extract( $args );
		$title = apply_filters('widget_title', $instance['title'] );
		echo $before_widget;
		if ( $title ) echo $before_title . $title . $after_title;
		echo '<ul class="links">'.wp_list_categories('echo=0&title_li=&use_desc_for_title=0').'</ul>';
		echo $after_widget;
	}
 
	function update( $new_instance, $old_instance ) {
		$instance = $old_instance;
		$instance['title'] = strip_tags( $new_instance['title'] );
		return $instance;
	}
 
	function form( $instance ) {
		$defaults = array( 'title' => 'Categories' );
		$instance = wp_parse_args( (array)$instance, $defaults );
		echo '
		<label for="'.$this->get_field_id( 'title' ).'">Title:</label> 
		<input id="'.$this->get_field_id( 'title' ).'" style="width: 100%;" type="text" name="'.$this->get_field_name( 'title' ).'" value="'.$instance['title'].'" /> '; 
	} 
}

Asegurar tu sitio web de WordPress

Hay muchos artículos sobre «cómo asegurar WordPress» disponibles en Internet. Las siguientes modificaciones podrían ser diferentes de otras que has visto antes.

El siguiente filtro es más bien una especie de arreglo para la siguiente situación: Si envías una búsqueda con una cadena vacía, el resultado es una lista de los últimos artículos en lugar de la página de resultados de la búsqueda y/o algún mensaje de error. Si usas una página estática para la página principal, el URL del último artículo se usa para el URL canónico. La última es mala para su SEO debido a la creación de contenido duplicado. Utilice este filtro/función en su functions.php.

add_filter( 'request', 'my_request_filter' );
function my_request_filter( $query_vars ) {
    if( isset( $_GET['s'] ) && trim($_GET['s']) == '' ) {
        $query_vars['s'] = ' ';
    }
    return $query_vars;
}

Para completarlo, edite también su search.php y añada esta declaración «if» para informar de un error si la cadena de búsqueda está vacía:

if (get_search_query() == ' ') echo 'Error, your search query is empty!';

La siguiente solución no sólo está relacionada con WordPress, sino que menciono esta solución porque es muy fácil cambiar las cabeceras HTTP en WordPress.

Eliminar el encabezado X-Pingback para mantener fuera algunos bots de spam
Enmascarar la actual versión instalada de PHP y decirle al mundo que su servidor no está ejecutando una posible versión insegura

function remove_change_myheaders($headers) {
    unset($headers['X-Pingback']);
    $headers['X-Powered-By'] = 'PHP/5';
    return $headers;
}
add_filter('wp_headers', 'remove_change_myheaders');

Las dos siguientes acciones de eliminación se utilizan para ocultar la versión actual de WordPress y para eliminar el enlace corto que se genera con WordPress. La primera es importante porque la etiqueta wp_generator le dirá al mundo exterior si has olvidado actualizar tu sitio web de WordPress. La eliminación del enlace corto puede no ser importante, pero ¿por qué deberías mostrar este enlace alternativo si este enlace no es usado por ningún visitante?

remove_action('wp_head', 'wp_generator');
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );

Limpieza del código

WordPress añade de forma predeterminada una cadena de consulta de versión a los archivos CSS y JavaScript (si los cargas con la acción wp_head). Esto podría ser de alguna manera útil para una biblioteca de JavaScript para evitar el almacenamiento en caché, pero ¿con qué frecuencia los actualizas? El siguiente código se utiliza para eliminarlos dinámicamente.

function remove_cssjs_ver( $src ) {
    if( strpos( $src, '?ver=' ) )
        $src = remove_query_arg( 'ver', $src );
    return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_ver', 10, 2 );
add_filter( 'script_loader_src', 'remove_cssjs_ver', 10, 2 );

Depende de qué tipo de plugins estés usando cuántos scripts externos u hojas de estilo CSS se cargan en cada página, incluso si el plugin o la función no se usa para esa sección o página. Para mantener tu sitio rápido es bueno eliminarlos cuando sea posible. Utiliza el siguiente ejemplo para eliminar las hojas de estilo CSS no deseadas.

function my_deregister_styles() {
	if (!is_single()) wp_deregister_style( 'wp-syntax-css' );
	wp_deregister_style( 'codeguard-stylesheet' );
}
add_action( 'wp_print_styles', 'my_deregister_styles', 100 );

Lo mismo para los archivos de JavaScript, piensa en dónde necesitas cargar tus propios scripts y remueve los scripts de terceros si es posible. En el siguiente ejemplo utilizo diferentes condiciones para incluir o excluir los diferentes scripts.

function load_my_scripts() {
	global $post;
	wp_deregister_script( 'codeguard-script' ); 
 	if (!is_single()) {
		wp_deregister_script( 'wp-postratings' );
	}
	if ($post->comment_status != 'open' && $post->comment_count == 0) {
		wp_deregister_script( 'comment-rating' );
	}
	if (has_term('templates', 'page-type') || is_category('blog') || is_page('domainname')) {
		wp_enqueue_script('thickbox');
		wp_enqueue_style('thickbox');
	}
}
add_action('wp_enqueue_scripts', 'load_my_scripts');

Eso es hasta ahora para esta serie de tutoriales de WordPress. Espero que te guste la información y si hay detalles que son demasiado complicados o si necesitas alguna explicación, no dudes en preguntar. Por favor, usa el formulario de comentarios que aparece a continuación. Suscríbete o sígueme en twitter para recibir actualizaciones de las nuevas publicaciones sobre WordPress y desarrollo web.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *