Activar gestor de enlaces en WordPress 3.5 y posteriores

Si sois seguidores de WordPress, sabréis que a partir de la versión 3.5, las nuevas instalaciones y activaciones en el caso de redes de blogs WordPress, pasan a no tener el gestor de enlaces.

Gestor de enlaces WordPress

En realidad no es que no tengan, es que por defecto no se activa y es una maniobra para eliminarlo a medio plazo (versión 3.6 o 3.7 quizás). Los que no tenían enlaces en uso, tampoco lo verán.

¿Por qué?

No sé las razones a ciencia cierta pero diría que es una mezcla de que la tabla wp_links ya no encaja tan bien dentro de la filosofía actual de la base de datos WordPress (podríamos hacer un custom post type con enlaces por ejemplo para sustituirla) y es una funcionalidad que se saca del núcleo para integrarla en un plugin.

Leer más » 1 Comentario

Comprobar si un usuario es administrador en WordPress

Cuando trabajamos con WordPress, uno de los puntos básicos es definir diferentes vistas en función del rol del usuario. En la mayor parte de las ocasiones, la diferencia será: es administrador, no lo es.

¿Para qué puede servirnos esto? Desde poner un enlace a editar entrada a otro de eliminar comentarios en tu tema, pasando por todo lo que podáis imaginar que queráis dividir entre visitantes de vuestro sitio y vosotros que sois los administradores.

El código:

if(current_user_can('manage_options'))
{
  // solo administrador
}
else
{
  // resto
}

Leer más » 1 Comentario

Seguridad en formularios WordPress: usando nonce

Cuando usamos WordPress como un CMS o incluso como una API y desarrollamos para él, no serán pocas las veces que tengamos que hacer operaciones de inserción y edición de datos mediante formularios.

Tener un formulario en una aplicación web, es un punto de entrada a nuestro sistema y un sitio complicado en lo que a seguridad se refiere. Si no cuidamos este aspecto también en WordPress, lo que es un CMS seguro, puede convertirse en un problema.

Para resolver este tema, la API de WordPress nos proporciona un mecanismo muy sencillo llamado nonce, que viene del inglés: número usado sólo una vez,  number used once.

Se usan en todo tipo de peticiones: salvando opciones en el administrador, haciendo peticiones AJAX o llevando a cabo cualquier acción susceptible de un problema de seguridad intercambiando información.

Leer más » 1 Comentario

¿Por qué no debemos usar require_once en PHP? ¿Qué soluciones tengo?

Cuando desarrollamos es muy frecuente que necesitemos leer código de otros ficheros, los lenguajes y las tecnología difieren en la forma, pero es algo básico y común a todos ellos (salvo excepciones). En PHP una forma cómoda de hacerlo es con require_once o include_once.

¿Por qué cómoda? Porque incluimos ficheros sin preocuparnos de si ya han sido incluidos. PHP lo hace por nosotros.

¿Qué problema hay? PHP al buscar si han sido incluidos o no, consume una cantidad de recursos y de tiempo de ejecución que siempre que podamos, debemos ahorrárnoslo.

¿Qué soluciones hay frente a este problema? Voy a detallar algunas de ellas, pero seguro que tú conoces alguna más que te funciona.

Usar un framework o un CMS

Si usas un entorno de este tipo, probablemente él te dote de funciones similares en funcionalidad que esquivan este problema. Por ejemplo en WordPress uso mucho get_template_part.

Indicar mediante define si se ha incluido o no

La idea sería algo así:

if (!defined('MiFichero')) {
    require('MiFichero');
    define('MiFicherp', 1);
}

De esta forma, con esta bandera, ya tenemos siempre presentes si está incluido o no (podemos hacer una función con ese código para reutilizarlo).

Leer más » 6 Comentarios

Lo mejor de mi timeline del 15 al 21 de diciembre

https://twitter.com/TuXapuntes/status/280309646374338560

Leer más » 1 Comentario

Limitar el número de palabras o caracteres en el editor de WordPress

No suele ser lo normal, porque lo más frecuente es que quieras limitar el tamaño del extracto (excerpt) pero en ocasiones puede dársenos el caso de que necesitemos para un cliente limitar el tamaño del contenido de nuestra entrada. Probablemente estemos hablando de un custom post type y a veces tendremos que limitar en función al número de palabras y otras veces, en función al número de caracteres.

El código es el siguiente y deberá ir insertado en vuestro fichero functions.php del tema que estéis usando:

add_action( 'admin_print_footer_scripts', 'check_textarea_length' );

function check_textarea_length() {
	?>

Leer más » 1 Comentario

5 consejos para usar jQuery con WordPress

A día de hoy pocos trabajan directamente con JavaScript para manejar la parte del cliente, se suelen usar frameworks que facilitan el trabajo y sin lugar a dudas, la referencia es jQuery. Cuando desarrollamos temas en WordPress (y plugins), por lo tanto, será bien probable que necesitemos de jQuery. Hay muchas formas de usarlo, pero vamos a explicar una serie de buenos métodos para evitar complicaciones.

Este texto es una traducción, adaptación y mejora del original en inglés: 5 tips for using jQuery with WordPress de Eric Martin.

1. Utiliza wp_enqueue_script()

Cuando manejamos jQuery a secas, sin WordPress, usamos directamente la etiqueta <script> y llamamos a nuestro fichero, ya esté en local o en un CDN. Sin embargo, en WordPress las cosas cambian, aunque pueda funcionar, no debemos hacerlo.

Para ello tenemos una función específica: wp_enqueue_script y podemos unir la carga de jQuery a una acción en concreto. Al igual que esta función existe otra para cargar estilos: wp_enqueue_style.

Leer más » 1 Comentario

Cómo obtener la anchura y la altura de las imágenes destacada de una entrada en WordPress

Cuando estamos diseñando un tema en WordPress probablemente tengamos que tratar con imágenes destacadas en las entradas, las llamadas Post Thumbnails. Las imágenes como tal tienen una serie de características, pero desde el punto de vista del diseño las que nos importa más son sus dimensiones: ancho y alto. ¿Cómo saberlas? Aquí os lo cuento.

Dentro del loop usaremos este extracto de código:

$imgdata = wp_get_attachment_image_src
  (get_post_thumbnail_id(), 'thumbnail');
$imgurl = $imgdata[0]; // UTL
$imgwidth = $imgdata[1]; // anchura
$imgheight = $imgdata[2]; // altura

Leer más » 1 Comentario

Integrar un plugin dentro de un tema en WordPress

Aunque el título parezca algo extraño, así es. Si tenemos un plugin que realiza una serie de funciones que queremos distribuir junto con nuestro tema, siempre podremos integrarlo dentro del mismo y así conseguir que al instalar el tema se tengan las funciones del plugin. No os preocupéis por la integración, salvando algún problema derivado de que el plugin lea alguna ruta mal definida (por culpa del autor del plugin) no deberíais tener ningún problema de integración: podréis ver su menú de administración, podréis usar sus shortcode si los tiene, podréis guardar preferencias, etc. no hay problemas en ese sentido gracias a la magia de WordPress su modularidad y lo bien que se adapta al espacio de nombres de PHP. ¿Cómo se hace?

  1. Copia y pega en el raíz de tu tema el directorio del plugin
  2. En el functions.php de tu tema incluye el siguiente código: require_once (get_template_directory() . ‘/miplugin/miplugin.php’ ); siendo “miplugin” el directorio del plugin en cuestión y el fichero que sigue el fichero principal del plugin
  3. Borra del fichero principal del plugin la metainformación que lo define, será un bloque de comentarios que comenzará de la siguiente forma:
Leer más » 1 Comentario

El Loop de WordPress: entendiendo la diferencia entre query_posts y WP_Query

Si hay algo importante en un sitio WordPress es el loop. Para programar sitios basados en WordPress debemos tener muy en cuenta los métodos que nos proporciona: query_posts y WP_Query, ¿qué diferencias tiene? ¿Cuándo debemos usar cada una?

Resumiendo

La función query_posts está pensada para modificar el loop de la página principal. La idea de esta función no es crear loops secundarios. Si lo que queremos es crear loop secundarios, deberemos usar objetos WP_Query. Usar query_posts en loop secundarios puede darnos como resultado comportamiento erróneos que muestren cosas que no queremos.

Loop de WordPress

¿Pero qué es el loop principal y qué son los loop secundarios?

Vamos a explicar detalladamente estos dos conceptos, para qué sirven y en qué situaciones hacen falta.

Leer más » 2 Comentarios