Obtener URL actual en WordPress

Estuve buscando una opción que fuera sencilla y elegante para poder mostrar la url actual en WordPress. Con PHP nativo tenemos bastante opciones, pero quería saber si WordPress lo hacía. Y así es, lo hace. Y es así:

global $wp;
$current_url = home_url(add_query_arg(array(),$wp->request));
¿Cómo deshabilitar plugins de WordPress en móvil?

En algunos proyectos para los que trabajo, necesito deshabilitar algunos plugins en móvil, por ejemplo, los sliders. En PrestaShop es sencillo, porque podemos deshabilitarlo directamente desde el listado de módulos. Pero en WordPress ya cambia la cosa.

Para ello, utilizo un plugin llamado  WP Mobile Detect.

Este plugin, nos ofrece una serie de shortcodes que podemos utilizarlo a nuestro antojo. Los que más utilizo son los siguientes:

[phone]Contenido SOLO para móvil[/phone]
[notphone]Contenido que NO se mostrará en móvil[/notphone]
[device]Contenido solo para escritorio[/device]

Podeís ver la lista completa en las preguntas frecuentes del plugin.

No permitir publicar sin imagen destacada en WordPress

Si necesitamos que todos nuestros post lleven imagen destacada pero a veces se nos olvida, o sencillamente queremos que nuestros editores la incorporen, podemos utilizar este código y  obligaremos a usarla.

Este snippet te obliga a usar imagen destacada en WordPress. Como siempre, lo incorporaremos en el archivo functions.php

add_action('save_post', 'wpds_check_thumbnail');
add_action('admin_notices', 'wpds_thumbnail_error');
function wpds_check_thumbnail($post_id) {
    // change to any custom post type
    if(get_post_type($post_id) != 'post')
        return;
    if ( !has_post_thumbnail( $post_id ) ) {
        // set a transient to show the users an admin message
        set_transient( "has_post_thumbnail", "no" );
        // unhook this function so it doesn't loop infinitely
        remove_action('save_post', 'wpds_check_thumbnail');
        // update the post set it to draft
        wp_update_post(array('ID' => $post_id, 'post_status' => 'draft'));
        add_action('save_post', 'wpds_check_thumbnail');
    } else {
        delete_transient( "has_post_thumbnail" );
    }
}
function wpds_thumbnail_error()
{
    // check if the transient is set, and display the error message
    if ( get_transient( "has_post_thumbnail" ) == "no" ) {
        echo "<div id='message' class='error'><p><strong>You must select Featured Image. Your Post is saved but it can not be published.</strong></p></div>";
        delete_transient( "has_post_thumbnail" );
    }
}

vía: wpsnipp.com

Reducir el número de revisiones en WordPress

A veces, las revisiones de las entradas o páginas nos pueden suponer un problema de espacio. Si estamos continuamente modificando páginas puede ser que nos ocupen muchos megas en nuestra base de datos de WordPress. Si a esto, le sumamos que no solemos hacer uso de esta funcionalidad, podemos prescindir o reducir el número de revisiones en WordPress perfectamente.

El uso de este código es muy sencillo:

define( 'WP_POST_REVISIONS', 4 );

En el ejemplo, definimos que solo se guardaran 4 revisiones. Podemos cambiar este valor por el que más nos interese o dejarlo en false si no queremos que nos guarde revisiones. Esta línea debemos incorporarla en el archivo wp-config.php.

 

Aumentar tiempo de sesión en el admin de WordPress

En el caso que queramos aumentar el tiempo de sesión de WordPress durante mucho tiempo o el tiempo que definamos, solo tenemos que añadir a nuestro functions.php las siguientes líneas:

add_filter( 'auth_cookie_expiration', 'stay_logged_in_for_1_year' );
function stay_logged_in_for_1_year( $expire ) {
return 15778463; // 6 meses
}

El valor que le asignemos debe estar en segundos.

Quitar palabra “Categoría” del archivo de WordPress

Cuando hago una plantilla de WordPress por defecto y entramos en las categorías, nos aparece delante del título de la categoría “Categoría:”.

También pasa en los archivos de tag y páginas de autor.

Esto podemos evitarlo añadiendo a nuestro functions.php estas simples líneas:

 add_filter( 'get_the_archive_title', function ($title) {
 if ( is_category() ) {
 $title = single_cat_title( '', false );
 } elseif ( is_tag() ) {
 $title = single_tag_title( '', false );
 } elseif ( is_author() ) {
 $title = '<span class="vcard">' . get_the_author() . '</span>' ;
 }
 return $title;
 });
Añadir clase a next_posts_link() y previous_posts_link()

Los enlaces de la paginación de WordPress por defecto vienen sin ninguna clase. En mi caso, quiero añadir la clase .btn de Twitter Bootstrap para darle estilo de botón. Con lo que hacemos lo siguiente en nuestro archivo functions.php

add_filter('next_posts_link_attributes', 'posts_link_attributes');
add_filter('previous_posts_link_attributes', 'posts_link_attributes');

function posts_link_attributes() {
 return 'class="btn btn-block btn-primary"';
}

En este caso, uso esas clases, pero podemos usar las que más nos convengan.