Funciones para WordPress (Parte3)

Email this to someoneShare on FacebookShare on Google+Share on LinkedInTweet about this on Twitter

Permitir a los colaboradores la subida de archivos

Pegando el siguiente código en el fichero functions.php permitiremos que los colaboradores puedan subir archivos al blog. Recuerda que como medida de seguridad en WorPress no se permite la subida de archivos al blog.

if ( current_user_can('contributor')
&& !current_user_can('upload_files') )
add_action('admin_init', 'allow_contributor_uploads');
function allow_contributor_uploads() {
$contributor = get_role('contributor');
$contributor->add_cap('upload_files');

Eliminar notificación de actualización

El siguiente código hace que las notificaciones que aparecen en la pantalla principal de WordPress cuando existe una nueva actualización no sean visibles. Especialmente útil, por ejemplo cuando realizamos una instalación de WordPress a un cliente. Para eliminar las notificaciones de actualización sólo se necesita pegar el siguiente código en el fichero functions.php

global $user_login;
get_currentuserinfo();
if ($user_login !== "admin") {
add_action( 'init', create_function( '$a',
"remove_action( 'init', 'wp_version_check' );" ), 2 );
add_filter( 'pre_option_update_core',
create_function( '$a', "return null;" ) );
}

Paginación de artículos sin necesidad de plugins

Gran cantidad de themes en WordPess dependen del plugin WP-Pagenavi para realizar correctamente la paginación. Ya sabemos que no es bueno recargar nuestro WordPress de plugins innecesarios, o como en este caso, con código que podemos insertar directamente en el fichero functions.php

function pagination($prev = '«', $next = '»') {
global $wp_query, $wp_rewrite;
$wp_query->query_vars['paged'] > 1 ? $current
= $wp_query->query_vars['paged'] : $current = 1;
$pagination = array(
'base' => @add_query_arg('paged','%#%'),
'format' => '',
'total' => $wp_query->max_num_pages,
'current' => $current,
'prev_text' => __($prev),
'next_text' => __($next), 'type' => 'plain'
);
if( $wp_rewrite->using_permalinks() )
$pagination['base'] = user_trailingslashit(
trailingslashit( remove_query_arg( 's',
get_pagenum_link( 1 ) ) ) . 'page/%#%/', 'paged' );
if( !empty($wp_query->query_vars['s']) )
$pagination['add_args'] = array( 's' =>
get_query_var( 's' ) ); echo
paginate_links( $pagination );
};

Una vez añadido el código anterior correctamente, sólo tienes que añadir la función pagination() al loop de WordPress:

<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
// contenido del artículo
<?php endwhile; ?>
<div><?php pagination('»', '«'); ?></div>
<?php endif; ?>

Para finalizar, recuerda que modificando las siguientes líneas en tu hoja de estilos CSS podás controlar la forma en la que se muestra la paginación:

.page-numbers { font-size: 15px; }
.page-numbers.current { color: #222; }
.page-numbers .dots { letter-spacing: 1px }
a.page-numbers { font-size: 14px; color: #3888ff; }

Categorizar y etiquetar artículos de forma automática

Con el siguiente código puedes hacer que al guardar un artículo automáticamente ya sea guardado con las etiquetas o categorías correspondientes. Para conseguirlo ya deben existir estas categorías/ etiquetas en el blog. Una vez que comprobamos que existen las etiquetas sólo tendremos que pegar el siguiente código en el fichero functions.php. Recordar antes de pegar el código cambiar “Nombre tag” y “Nombre categoría”

<?php
add_action( 'wp_insert_post', 'update_post_terms' );
function update_post_terms( $post_id ) {
if ( $parent = wp_is_post_revision( $post_id ) )
$post_id = $parent;
$post = get_post( $post_id );
if ( $post->post_type != 'post' )
return;
// add a tag
wp_set_post_terms( $post_id, 'Nombre tag', 'post_tag', true );
// add a category
$categories = wp_get_post_categories( $post_id );
$newcat = get_term_by( 'name', 'Nombre categoria', 'category' );
array_push( $categories, $newcat->term_id );
wp_set_post_categories( $post_id, $categories );
}
?>

Habilitar por defecto el acortador de direcciones de Google (goo.gl)

Pegando el siguiente código en el fichero functions.php conseguirás habilitar el acortador de URLs de Google.

function googl_shortlink($url, $post_id) {
global $post;
if (!$post_id && $post) $post_id = $post->ID;

if ($post->post_status != 'publish')
return "";

$shortlink = get_post_meta($post_id, '_googl_shortlink', true);
if ($shortlink)
return $shortlink;

$permalink = get_permalink($post_id);

$http = new WP_Http();
$headers = array('Content-Type' => 'application/json');
$result = $http->request('https://www.googleapis.com/urlshortener/v1/url',
array( 'method' => 'POST', 'body' => '{"longUrl": "' . $permalink . '"}',
 'headers' => $headers));
$result = json_decode($result['body']);
$shortlink = $result->id;

if ($shortlink) {
add_post_meta($post_id, '_googl_shortlink', $shortlink, true);
return $shortlink;
}
else {
return $url;
}
}

add_filter('get_shortlink', 'googl_shortlink', 9, 2);

Po último añadir el siguiente código donde quieras utilizar la URL acortada de tu artículo:

echo "URL corta: " . wp_get_shortlink();

Sé la primera persona en comentar

Deja un comentario

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

De conformidad con lo establecido en la LOPD, Adpv Advertising Provider S.L. garantiza la adopción de las medidas necesarias para asegurar el tratamiento confidencial de los datos de carácter personal. Así mismo le informamos de la inclusión de sus datos en un fichero con la finalidad de mantener su relación negocial o contractual con Adpv Advertising Provider S.L. y de la posibilidad de ejercer los derechos de acceso, rectificación, cancelación y oposición en la siguiente dirección: Ercilla, 26, 1Dcha., 48011, Bilbao, Bizkaia. Privacidad.