5 hacks para personalizar tu WordPress como siempre lo quisiste

hacks wordpress

Hay detalles que pueden mejorarse en el tema que utilices para tu sitio web, tanto desde un punto de vista de diseño como de funcionalidad, los cuales pueden darle un toque extra a la buena experiencia de usuario que quieres lograr. Veamos 5 mejoras que podríamos realizar.

  1. Darle otro aspecto a la página de acceso

 

Puedes personalizar el aspecto y funcionalidad de la página de acceso o login, a pesar que no puedas crear una página personalizada para esta tarea. Lo que debes hacer es crear una función que agregue el archivo de CSS que quieres usar para la personalización de la apariencia, así como el JavaScript de comportamiento que quieras adicionar, y agregar esta función mediante la acción del login_enqueue_scripts.

 

function theme_customize_login() {

?>

<link rel=”stylesheet” href=”<?php echo get_bloginfo( ‘stylesheet_directory’ ) . ‘/login.css’; ?>” type=”text/css” media=”all” />

<?php

}

add_action( ‘login_enqueue_scripts’, ‘theme_customize_login’ );

 

Ten presente de utilizar los adecuados selectores para que la sobrescritura de los estilos sea correcta. Aquí está la lista:

 

body.login {}

body.login div#login {}

body.login div#login h1 {}

body.login div#login h1 a {}

body.login div#login form#loginform {}

body.login div#login form#loginform p {}

body.login div#login form#loginform p label {}

body.login div#login form#loginform input {}

body.login div#login form#loginform input#user_login {}

body.login div#login form#loginform input#user_pass {}

body.login div#login form#loginform p.forgetmenot {}

body.login div#login form#loginform p.forgetmenot input#rememberme {}

body.login div#login form#loginform p.submit {}

body.login div#login form#loginform p.submit input#wp-submit {}

body.login div#login p#nav {}

body.login div#login p#nav a {}

body.login div#login p#backtoblog {}

body.login div#login p#backtoblog a {}

 

Por ejemplo este es el código CSS para la página de acceso más abajo.

 

body.login { background-color: #d9e5ca; color: #324c0d; }

body.login div#login h1 a { background-image: url(‘images/logo.png’); }

body.login div#login form#loginform p.submit input#wp-submit {

background-color: #324c0d;

background-image: linear-gradient(to bottom, #d9e5ca, #324c0d);

border-bottom-color: #a3d39c;

border-left-color: #324c0d;

border-right-color: #324c0d;

border-top-color: #324c0d;

box-shadow: inset 0px 1px 0px rgba(198, 230, 120, 0.506);

}

 

personalizar login

  1. Haciendo que el título del post sea el título de la página

 

No es el comportamiento por defecto de WordPress, y parece lógica su utilidad como muestra la imagen.

 

titulo

Para lograr esto, se debe sobrescribir el comportamiento de “wp_title”, capturando el título del post cuando se esté mostrando un post individualmente. El código para lograrlo, lo vemos a continuación:

 

function theme_add_post_title_to_blog_title($title, $sep) {

if( is_single() ) {

global $post;

$title = $post->post_title . ‘ | ‘ . get_bloginfo( ‘name’ );

}

return $title;

}

 

add_filter(‘wp_title’, ‘theme_add_post_title_to_blog_title’, 10, 2);

 

  1. Actualizar reglas de sobrescritura

Sucede que las reglas de sobrescritura de los custom post types no se actualizan automáticamente cuando actualizas un tema, por lo que es posible que no vayan a ejecutarse.

 

Para solucionar esto manualmente deberíamos ir al panel de control de WordPress a Permalinks y hacer clic en “Save Changes”. Pero para que esto quede automatizado, debemos agregar una función que utilice flush_rewrite_rules() y adicionarla al after_switch_theme(), como se muestra a continuación:

 

function theme_flush_rewrite() {

flush_rewrite_rules();

}

add_action( ‘after_switch_theme’, ‘theme_flush_rewrite’ );

 

  1. Ir directo a ese único resultado de una búsqueda

Parecería lógico que si se hace una búsqueda, y sólo hay un resultado, es probable que sea lo que estemos buscando, por lo que podríamos abrir directamente el enlace resultante. Para esto, hacemos uso del template_redirect para agregar una función que se ejecute cuando nos aseguremos que el resultado de una búsqueda, es sólo uno.

 

function theme_show_on_match() {

if (is_search()) {

global $wp_query;

if ($wp_query->post_count == 1) {

wp_redirect( get_permalink( $wp_query->posts[‘0’]->ID ) );

}

}

}

add_action(‘template_redirect’, ‘theme_show_on_match’);

 

  1. Buscar sólo en los títulos de los post

Cuando hacemos una búsqueda, los resultados pueden ser numerosos y quizás de poca utilidad, ya que la búsqueda se hace tanto en los títulos como en el contenido de los post. Podemos reducir estos resultados para que muestre sólo resultados de búsquedas sólo en los títulos, al sobrescribir el filtro post_search y usar una nueva función usando luego de hacer clic al botón de búsqueda.

 

function theme_title_only_search( $search, &$wp_query ) {

global $wpdb;

 

if ( empty($search) )

return $search; // skip processing – no search term in query

 

$search = ”;

 

$q = $wp_query->query_vars;

 

// Fill again in case pre_get_posts unset some vars.

$q = $wp_query->fill_query_vars($q);

 

if ( isset($q) && !empty($q[‘s’]) ) {

// added slashes screw with quote grouping when done early, so done later

$q[‘s’] = stripslashes($q[‘s’]);

if ( empty( $_GET[‘s’] ) && $wp_query->is_main_query() )

$q[‘s’] = urldecode($q[‘s’]);

if ( !empty($q[‘sentence’]) ) {

$q[‘search_terms’] = array($q[‘s’]);

} else {

preg_match_all(‘/”.*?(“|$)|((?<=[\r\n\t “,+])|^)[^\r\n\t “,+]+/’, $q[‘s’], $matches);

$q[‘search_terms’] = array_map(‘_search_terms_tidy’, $matches[0]);

}

$n = !empty($q[‘exact’]) ? ” : ‘%’;

$searchand = ”;

foreach( (array) $q[‘search_terms’] as $term ) {

$term = esc_sql( like_escape( $term ) );

$search .= “{$searchand}($wpdb->posts.post_title LIKE ‘{$n}{$term}{$n}’)”;

$searchand = ‘ AND ‘;

}

 

if ( !empty($search) ) {

$search = ” AND ({$search}) “;

if ( !is_user_logged_in() )

$search .= ” AND ($wpdb->posts.post_password = ”) “;

}

}

return $search;

}

add_filter( ‘posts_search’, ‘custom_search’, 10, 2 );

 

 

Leave a Reply

Your email address will not be published.

×
¿Podemos Ayudarte?