Inicio / Wordpress Principiantes / 20 Snippets que llevaran tu WordPress al siguiente nivel
Escrito por | | en Wordpress Principiantes

20 Snippets que llevaran tu WordPress al siguiente nivel

20 Snippets que llevaran tu WordPress al siguiente nivel
Rate this post

20 snippets WordPress o fragmentos de código que llevaran tu sitio al siguiente nivel.

¿Cómo conocer la cantidad de visitas en un post sin activar ningún plugin?, ¿Cómo eliminar la imagen destacada al eliminar un post? o ¿Cómo agregar clases CSS especiales a la imagen destacada? serán solo algunas de las preguntas que nos iremos respondiendo en este post.

La mayoría de estos snippets deben ser agregados en el archivo functios.php o en su defecto en el plugin que nos creemos para guardar nuestras funciones más útiles. En artículos anteriores creamos un plugin para generar un custom post type, este es un buen momento para agregar los snippets WordPress que creamos que nos serán útiles.

Snippets WordPress-Lleva tu sitio al siguiente nivel.

 

1) Borrar la Imagen Destacada, cuando elimino el post

Algunos usuarios jóvenes de WordPress olvidan que al borrar un post, la imagen destacada de ese post queda guardada en nuestra biblioteca de medios. Con este snippet conseguirás evitar ese problema, pero deberás tener cuidado, ya que si utilizas una imagen destacada para varios post, al borrar alguno borrar también la imagen asociada. Se está utilizando el gancho o “hook” :before_delete_post.

add_action( 'before_delete_post', 'wps_remove_attachment_with_post', 10 );
function wps_remove_attachment_with_post($post_id)
{
        if(has_post_thumbnail( $post_id ))
        {
          $attachment_id = get_post_thumbnail_id( $post_id );
          wp_delete_attachment($attachment_id, true);
        }
}

2) Mostrar el número de visitas a un post, sin plugin

Este fragmento de código debes agregarlo en tu functios.php o en tu plugin de funciones, luego deberás agregar algo más de código en tu archivo single.php, será el que muestre el número de visitas

function getPostViews($postID){
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
        return "0 View";
    }
    return $count.' Views';
}
function setPostViews($postID) {
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        $count = 0;
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
    }else{
        $count++;
        update_post_meta($postID, $count_key, $count);
    }
}

remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);

Ahora en tu archivo single.php, dentro del ciclo o loop de WordPress, agrega lo siguiente:

setPostViews(get_the_ID());
Almacenamiento en caché de Snippets

Si en tu sitio tienes activado el plugin de cache W3 Total Cache, el código anterior no funcionara. Deberás utilizar el siguiente :

<!-- mfunc setPostViews(get_the_ID()); --><!-- /mfunc -->

3) Agregar un atributo especial a las imágenes

En algunas ocasiones necesitamos agregar atributos o campos especiales a nuestras imágenes. En este caso puedes agregar la clase css “mi_imagen” por ejemplo, quedando de la siguiente forma: class=”mi_imagen”. También funcionaria con otros atributos como title, itemprop, alt, etc.

the_post_thumbnail( 'thumbnail', array('class'=>'mi_imagen') );

4) Como agregar la imagen destacada a tu fuente RSS

Con el marcado uso del newsletter este snnippet tiene mucha importancia, ya que te ahorra el uso de un plugin. Y eso en estos días no es poco. Puedes agregar la imagen destacada a tu feed y así enviar tus últimos post por e-mail, sabiendo que se mostrara la imagen destacada de estos.

add_filter( 'the_content', 'featured_image_in_feed' );
function featured_image_in_feed( $content ) {
    global $post;
    if( is_feed() ) {
        if ( has_post_thumbnail( $post->ID ) ){
            $output = get_the_post_thumbnail( $post->ID, 'medium', array( 'style' => 'float:left; margin:0 0 10px 10px;' ) );
            $content = $output . $content;
        }
    }
    return $content;
}

En este caso la imagen destacada se mostrará a la izquierda del primer párrafo, pero puedes modificar el css de este snippets para que lo muestres como tú necesites.

5) Remover la versión de WordPress

Un poco más conocido, pero siempre útil para dar más seguridad a nuestro WordPress.

remove_action('wp_head', 'wp_generator');

6) Mejorando la Velocidad de carga de WordPress

Con este trozo de código también podríamos ahorrarnos algún plugin. Obligamos a nuestra instalación de WordPress a comprimir el css, comprimir los scripts, concatenar los scritps (ten especial cuidado con este) y como si fuera poco obligamos a nuestra instalación a servir el contenido en modo GZIP, lo que acelerara la descarga de nuestro sitio.

define( 'COMPRESS_CSS', true );
define( 'COMPRESS_SCRIPTS', true );
define( 'CONCATENATE_SCRIPTS', true );
define( 'ENFORCE_GZIP', true );

7) Remover las versiones de los archivos css y js

Este trozo de código es muy útil para ayudar al cache de nuestros archivos css y js. Esto mejoraría nuestra puntuación en Google Page Speed. WordPress por defecto le coloca la versión en las urls de nuestros archivos de estilos y scripts, con este snippets eliminaremos la mayoría.

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' );
add_filter( 'script_loader_src', 'remove_cssjs_ver');

8) Limitar el número de revisiones en WordPress

En este caso le decimos a WordPress, que solo permita hasta 4 revisiones por post, esto puede ser útil si el administrador del sitio escribe mucho en el editor, wordpress ira guardando cada cierto periodo de tiempo una versión de su post, ocupando así espacio en la base de datos.

if (!defined('WP_POST_REVISIONS')) define('WP_POST_REVISIONS', 4);
if (!defined('WP_POST_REVISIONS')) define('WP_POST_REVISIONS', false);

9) Obligar la carga de la Imágen Destacada

Existen situaciones en las que si el usuario no carga la imagen destacada del post, la apariencia del sitio no será la solicitada por el cliente, por ello suele ser necesario obligarlo a cargar la imagen destacada en cada post.

add_action('save_post', 'wp_check_thumbnail');
add_action('admin_notices', 'wp_thumbnail_error');
function wp_check_thumbnail($post_id) {
// cambiar por cualquier Tipo de Post o página
if(get_post_type($post_id) != 'post')
return;
if ( !has_post_thumbnail( $post_id ) ) {

set_transient( "has_post_thumbnail", "no" );

remove_action('save_post', 'wpds_check_thumbnail');

wp_update_post(array('ID' => $post_id, 'post_status' => 'draft'));
add_action('save_post', 'wpds_check_thumbnail');
} else {
delete_transient( "has_post_thumbnail" );
}
}
function wp_thumbnail_error()
{
// chequeamos el transient y mostramos un mensaje de error
if ( get_transient( "has_post_thumbnail" ) == "no" ) {
echo "
<div id="message" class="error">
Usted debe incluir una imagen destacada, el post se guardara pero no sera publicado.
</div>
";
delete_transient( "has_post_thumbnail" );
}

10) Remover o deshabilitar los emojis en WordPress

Esta es una característica que fue agregada en WordPress 4.2, y en general le da un toque moderno a tu WordPress, pero si tu no la utilizas, deberías deshabilitarla y así ahorrar peticiones al servidor, ya que estarás cargando un archivo menos. Con esto evitaras la carga del archivo wp-emoji-release.min.js.

function disable_emojis() {
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' ); 
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' ); 
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
add_filter( 'wp_resource_hints', 'disable_emojis_remove_dns_prefetch', 10, 2 );
}
add_action( 'init', 'disable_emojis' );

11) Limpiando el encabezado de tu sitio, mejorando la velocidad de tu WordPress

Con este snippet limpiaras el head o encabezado de tu sitio WordPress, enviando todas las referencias de archivos css, js y las fuentes al pie de página (o footer) de tu sitio. Esto te hará ganar algo de velocidad y mejorara tu puntuación en Google Page Speed.

function footer_enqueue_scripts() {
 remove_action('wp_head', 'wp_print_scripts');
 remove_action('wp_head', 'wp_print_head_scripts', 9);
 remove_action('wp_head', 'wp_enqueue_scripts', 1);
 add_action('wp_footer', 'wp_print_scripts', 5);
 add_action('wp_footer', 'wp_enqueue_scripts', 5);
 add_action('wp_footer', 'wp_print_head_scripts', 5);
}
add_action('after_setup_theme', 'footer_enqueue_scripts');

12) Creando Taxonomías para nuestros Custom Post Type

Recordaras que en artículos anteriores creamos un Custom Post Type, ahora con este trozo de código lo que hacemos es agregar una categoría especial para este CPT. Las taxonomías puedens er entendidas como categorías o palabras claves para nuestros contenidos, formas de organizar la información. Un poco más de info sobre taxonomías en WordPress.

function taxonomia_para_portafolio() {

$labels = array('name'                       => _x( 'Categorias para Portafolio', 'Taxonomy General Name', 'text_domain' ),
		'singular_name'              => _x( 'Categoria de  Portafolio', 'Taxonomy Singular Name', 'text_domain' ),
		'menu_name'                  => __( 'Categorias de Portafolio', 'text_domain' ),
		'all_items'                  => __( 'All Items', 'text_domain' ),
		'parent_item'                => __( 'Parent Item', 'text_domain' ),
		'parent_item_colon'          => __( 'Parent Item:', 'text_domain' ),
		'new_item_name'              => __( 'New Category', 'text_domain' ),
		'add_new_item'               => __( 'Add New Category', 'text_domain' ),
		'edit_item'                  => __( 'Edit Item', 'text_domain' ),
		'update_item'                => __( 'Update Item', 'text_domain' ),
		'separate_items_with_commas' => __( 'Separate items with commas', 'text_domain' ),
		'search_items'               => __( 'Search Items', 'bighost' ),
		'add_or_remove_items'        => __( 'Add or remove items', 'bighost' ),
		'choose_from_most_used'      => __( 'Choose from the most used items', 'text_domain' ),
		'not_found'                  => __( 'Not Found', 'text_domain' ),
	);
	$args = array(
		'labels'                     => $labels,
		'hierarchical'               => true,
		'public'                     => true,
		'show_ui'                    => true,
		'show_admin_column'          => true,
		'show_in_nav_menus'          => true,
		'show_tagcloud'              => true,
	);
	register_taxonomy( 'categoria_de_portafolio', array( 'portafolio' ), $args );

}

// Esta funcion se agregara a la accion "Init", esto es lo que se demonima gancho o hook en WordPress.
 add_action( 'init', 'taxonomia_para_portafolio', 0 );

13) Elegir solo una categoría en WordPress

Por defecto WordPress permite elegir varias categorías y si no eliges ninguna, asignara tu post a la categoría llamada “Sin Categoría”. Con este Snippets forzaras a que el usuario pueda seleccionar solo una categoría.


if(
	strstr($_SERVER['REQUEST_URI'], 'wp-admin/post-new.php') ||
	strstr($_SERVER['REQUEST_URI'], 'wp-admin/post.php')

	)
{
ob_start('one_category_only');
}
function one_category_only($content) {
$content = str_replace('type="checkbox" ', 'type="radio" ', $content);
return $content;
}

14) Cargar la versión de jquery desde los servidores de google

Esto nos ayudara a cargar nuestro sitio un pelín mas rápido, ya que estaremos cargando este recurso desde los servidores de google, también la carga se realizara en paralelo es decir, los recursos de nuestro sitio no deberán esperar a que cargue jquery para cargarse, todos se cargaran en paralelo.

// Usamos las funciones recomendadas para agregar script : wp_enqueue_script('jquery'); en nuestro header

function wpsnippet_jquery_enqueue() {
	wp_deregister_script('jquery');
	wp_register_script('jquery', "http" . ($_SERVER['SERVER_PORT'] == 443 ? "s" : "") . "://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js", false, null);
	wp_enqueue_script('jquery');
}
if (!is_admin()) add_action("wp_enqueue_scripts", "wpsnippet_jquery_enqueue", 11);

15) Habilitar shortcodes en los Widgets

En algunas ocasiones solemos necesitar agregar algún código corto a nuestros widgets.

add_filter( 'widget_text', 'do_shortcode' );

16) Ocultar mensaje de actualización

Si bien no es una práctica recomendable, ya que debemos tener todos nuestros sitios actualizados, en algunas ocasiones es necesario que nuestros clientes no actualicen a la última versión de WordPress hasta que hayamos testeado el comportamiento de algún plugin o funcionalidad especial del sitio. Este código nos ayudara a ocultar el mensaje de actualización.

// Ocultar el mensaje de actualización para la versión actual de WordPress
function wp_ocultar_actualizacion() {
remove_action('admin_notices', 'update_nag', 3);
}
add_action('admin_menu','wp_ocultar_actualizacion');

17) Ocultar el editor de Theme para el usuario Admin

En algunos momentos es bueno que no se le permita a nuestro cliente modificar la programación de los archivos del theme, nos ahorraremos un dolor de cabeza si evitamos que manos curiosas toquen lo que no comprenden.

define('DISALLOW_FILE_EDIT', true);

18) Agregar nuestra hoja de estilos al editor de WordPress

Suele sernos útil observar como quedan nuestros post mientras los vamos escribiendo, para esto es necesario que las reglas css que se aplicaran en el frontend también se apliquen en el editor, para que veamos que apariencia toma el contenido que queremos compartir. Con este código agregamos nuestra hoja de estilos al editor de WordPress.

add_editor_style('custom-editor-style.css');

19) Personalizar la cantidad de resultados de nuestra búsqueda

Si quisiéramos que la cantidad de resultados en nuestra página de búsqueda fuera distinta a la cantidad de resultados de nuestro blog o de la pagina Archive, deberíamos usar este código para mostrar la cantidad de resultados que necesitemos en la página Search.

function personalizar_resultados_de_busqueda() {

if ( is_search() )
set_query_var('posts_per_archive_page', 15);
}
add_filter('pre_get_posts', 'personalizar_resultados_de_busqueda');

20) Mostrar los errores en el desarrollo de nuestros themes

Para los programadores de themes nos es muy útil visualizar los errores que podamos cometer en la fase de desarrollo, con este código podremos visualizar la mayoría de ellos. Debemos agregar este fragmento en el archivo wp-config.php de nuestra instalación WordPress.

// Permitir que los errores se visualizen en pantalla 
define('WP_DEBUG', true);

Habilitar un archivo para el registro de errores /wp-content/debug.log  
define('WP_DEBUG_LOG', true);
 
// Mostrar en que archivos y en que lineas se produjo nuestro error. 
define('WP_DEBUG_DISPLAY', true);

// si estuvieramos modificando archivos js y css del nucleo de nuestro WordPress
define('SCRIPT_DEBUG', true);

Esperemos que estos fragmentos de código te ayuden a mejorar el desarrollo de tus sitios en WordPress, no olvides utilizar con responsabilidad estos snippets ya que en muchos casos estamos modificando las funcionalidades por defecto que tiene nuestro querido WordPress.

Deja un comentario

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