Qué no hacer si eres desarrollador de plugins

Si eres desarrollador y quieres subir un plugin al repositorio oficial hay una serie de convenciones a cumplir, pero sobre todo debes saber que no debes hacer:

  1. Usar una licencia incompatible con la licencia de WordPress (GPL)
  2. Alojar tu plugin en cualquier parte, y solo usar el repositorio para apuntar a enlaces externos.
  3. Usar codificación base64 para ocultar el código de tu plugin u ofuscar el HTML que vas a inyectar en los blogs de la gente.
  4. Insertar enlaces de SEO spam en los blogs de la gente.
  5. Insertar enlaces externos en los blogs de la gente (como esos de "Awesome plugins by Myself") sin pedir su aceptación expresa, o hacer que por defecto se inserte el enlace.
  6. Cargar partes de código desde una fuente externa sin una razón válida, o usar otro truco para hacer los puntos 3,4 y 5.
  7. Recopilar direcciones de email de la gente o requerir registro de algún tipo para poder activar el plugin.
  8. Establecer explícitamente que los usuarios deban pagar algo por usar el plugin.
  9. Hacer que el plugin requiera de otros plugins, alojados en otro sitio, para funcionar. Ver punto 2.
  10. Que haga algo ilegal.
  11. Que haga algo deshonesto o inmoral, como desactivar plugins de otro desarrollador, por ejemplo, o que recopile contraseñas del usuario, cualquier cosa poco ética que se te ocurra.

Yo creo que es bastante razonable, ¿se te ocurre algo más?, es más ¿has encontrado plugins con alguno de estos defectos en el repositorio?.

Contenido exclusivo para suscriptores al Feed

¡Gracias por seguirnos a diario!. Premiamos tu fidelidad ofreciéndote habitualmente contenidos exclusivos. Hoy puedes descargar:

Clic aquí para iniciar la descarga Guía Domina tu Blog

¿Te gustó este post? ¡Compártelo! Bitacoras.com TwitThis Facebook Meneame Google Bookmarks del.icio.us Live Technorati Ping.fm Wikio Turn this article into a PDF! E-mail this story to a friend! Print this article!

Crear menús de navegación con HTML, CSS y PHP

Mientras esperamos el lanzamiento oficial de WordPress 3.0 y sus nuevas funcionalidades, vamos a tener tiempo para empezar a explorar la versión beta, que ya podemos descargar de la página oficial.

Las nuevas funcionalidades que llegan con esta versión y que tienen que ver con los menús nos permitirán seleccionar qué elementos dinámicos incluiremos en la navegación de nuestra web, como tags, categorías o links, desde la misma Administración. Hemos pensado que sería interesante acercarnos a la creación de menús para tenerla fresca a la hora de implementar las nuevas posibilidades que WordPress nos ofrece en su última versión.

Recordemos que la más típica forma de crear un menú es usando elementos de lista, “floteados” a la izquierda o dispuestos como “inline”, y sin list-style-type, aunque en HTML5 (que está aún en proyecto) tendremos una forma más rapida para crearlos, con el tag “nav”.

Vamos a usar la forma convencional con HTML4 y a suponer que estamos creando desde cero un tema de WordPress para nuestra web. En style.css, podríamos usar el siguiente CSS:


/*
tipografía
*/

#mi_menu{
	font-family:Arial,sans-serif;
	font-size:10px;
	}

/*
formatear el marco de lista
*/

#mi_menu ul{
	margin:0;
	padding:0;
	list-style-type:none;
	}

/*
cada elemento de lista, con float:left para que cree lista horizontal
*/
#mi_menu li{
	float:left;
	height:18px;
	line-height:18px;
	text-align:center;
	background: #eee;
	}

/*
los enlaces de la lista, en display:block para que ocupen todo el espacio y sea fácil clicarlos
*/

#mi_menu li a{
	display:block;
	padding: 9px 24px;
	background: #eee;
	color:#111;
	text-decoration:none;
	border-right: 1px solid #ddd;
	}

/*
un efecto de color a escoger, cuando el mouse sobrevuela cada elemento
*/

#mi_menu li a:hover{
	background: #555;
	color:#eee
	}

Veamos ahora cómo debería estar dispuesta la lista en HTML:

	<div id="mi_menu">
	<ul>
		<li><a href="#">Elemento Uno</a>
		</li>
		<li><a href="#">Elemento Dos</a>
		</li>
		<li><a href="#">Elemento Tres</a>
		</li>
		<li><a href="#">Elemento Cuatro</a>
		</li>
		<li><a href="#">Elemento Cinco</a>
		</li>
		<li><a href="#">Elemento Seis</a>
		</li>
		<li><a href="#">Elemento Siete</a>
		</li>
		<li><a href="#">Elemento Ocho</a>
		</li>
	</ul>
	</div>
Ejemplo

Pero en vez de crearla elemento a elemento, lo interesante será que dinámicamente se nos creen los elementos de lista: por ejemplo, a través de algunas de nuestras páginas y de nuestras categorías, que en ese caso enlazarían a una página de archivo.

Nuestra lista

Son dos “template tags” en concreto las que nos lo permitirán: wp_list_pages y wp_list_categories.

Normalmente los listaríamos así:

<ul>
<?php wp_list_pages(); ?>
<?php wp_list_categories(); ?>
</ul>

Pero habrá, por supuesto, que considerar que no vamos simplemente a necesitar todas las páginas creadas, ni todas las categorías, ni un orden puramente alfabético.

Por tanto, ¿cómo “matizar” ambas llamadas a la base de datos? Echemos un vistazo a las posibilidades que ambos recursos nos ofrecen.

Antes de nuestra lista: variables para listar páginas

Antes de escribir el código para nuestra lista con ambas llamadas, tendremos que pegar dos conjuntos de variables que afectarán, el primero, a wp_list_pages, y el segundo a wp_list_categories. Empecemos por el primero.

<?php $paginas = array(
    'depth'        => 0,
	//un valor de 0 lista páginas, y si tienen sub-páginas, las añade como sub-listas también
	//esto nos va bién cuando queremos crear un submenú.
	//un valor de -1 lista TODAS las páginas, en una lista simple
	//un valor de 1 lista páginas madre &uacute:nicamente
	//un valor de 2, 3, etc lista páginas sólo a ése nivel de profundidad

	//Podemos hacer que una página pertenezca a otra como subpágina en nuestra Administración
	//(cuando vamos a clicar para que se publique)

    'show_date'    => ,
	//si delante de la coma escribimos por ejemplo: created
	//se nos listará la fecha de publicación de la página

    'date_format'  => get_option('date_format'),
	//si queremos fecha, aquí usaremos el formato que se puede especificar en la Admin

    'child_of'     => 0,
	//ahora está a 0, es decir, inactivo
	//si escribimos ahí la ID numérica de una página nos devolverá las sub-páginas que ésta tuviera
	//en vez de la pagina directamente

    'exclude'      => ,
	//lugar para escribir la ID de las paginas que queremos excluír -separadas por comas-

    'include'      => ,
	//SOLAMENTE tráeme estas IDs (una manera potente de pedir determinadas páginas de entre todas las que tengamos)

    'title_li'     => ,
	//lugar para especificar si queremos un título genérico para las páginas
					//en los menús horizontales, no es habitual, en los verticales sí

    'echo'         => 1,
	//muestro o guardo como PHP?
	//1 significa muestro (imprimo), 0 significa guardo (para trabajar con PHP más tarde)

    'authors'      => ,
	//ID numéricas de páginas creadas por tal o cual autor sólamente

    'sort_column'  => 'menu_order, post_title',
	//en la Administració, a cada pagina se le puede dar un valor para ordenarla
	//hay que buscar el campo adecuado para ello cuando estamos editando la página
	//será el orden en que salgan en nuestra lista
	//aquí, si la opción está desetimada, tenemos un "fallback" para ordenarlas por título
	//otras opciones son: post_title, post_date, post_modified, ID, post_author, post_name

    'link_before'  => ,
	//algo para poner delante del nombre de la página
	//por ejemplo, el signo +
    'link_after'   => ,
	//algo para poner después del nombre de la página
	//por ejemplo, de nuevo el signo +

    'meta_key'  => ,
	//sólo las páginas que tengan activado cierto campo personalizado

    'meta_value'   => ,
	//sólo las páginas que tengan activado cierto VALOR de campo personalizado

    'exclude_tree' =>
	//añadir aquí la ID de una pagina y sus sub-páginas para excluír al grupo entero

	); ?>

Obviamente podemos sólo especificar algunos de los elementos y ahorrarnos la larga lista de argumentos para simplemente poner…

<ul>
  <?php wp_list_pages('sort_column=menu_order&title_li='); ?>
</ul>

…que nos traería páginas por orden de menú, y sin título genérico de lista.

Segundo conjunto de variables: listando categorías

Con las categorías tenemos que hacer lo mismo y pegar y editar lo siguiente:

<?php $categorias = array(

    'show_option_all'    => ,
		//un valor otro que nulo, añade un link que diga "hacia todoas las categorías"

    'orderby'            => 'name',
		//ID
		//name
		//slug
		//count
		//term_group
		//(a escoger, lo típico es name)

    'order'              => 'ASC',
		//ASC -desplegar de A a Z- o DESC -desplegar de Z a A-

    'show_last_update'   => 0,
		//un valor de 1 nos da el tiempo en que el último post de ésa categoría fue escrito

    'style'              => 'list',
		//la alternativa es 'none', que separa los items con <br> tags

    'show_count'         => 0,
		//mostrar si o no (1 o 0) cuántos posts hay en cada categoría

    'hide_empty'         => 1,
		//1 esconde las categorías vacías, 0 las muestra

    'use_desc_for_title' => 1,
		//añadir la eventual descripción al atributo alt de cada link

    'child_of'           => 0,
		//una ID de categoría listará sólo sub-categorías en vez de la categoría principal, 0 es inactivo

    'feed'               => ,
		//un valor de RSS nos da links al feed de cada categoría, además de ésta

    'feed_type'          => ,
		//

    'feed_image'         => ,
		//

    'exclude'            => ,
		//ID a excluír, muy útil

    'exclude_tree'       => ,
		//olvidarse de sub-categorías o no, por defecto es mostrarlas, como aquí

	'include'            => ,
		//sólo incluír ciertas IDs

    'current_category'   => 0,
		//dar la clase current-cat (para dar css específicos) a la ID de la categoría que se escriba

    'hierarchical'       => true,
		//false nos da una lista simple, sin árbol

    'title_li'           => ,
		//lo mejor es dejarlo vacío, si queremos dar un título genérico a la lista, añadir esto __( 'Categories' )

    'number'             => NULL,
		//limitar a base de PHP las categorías retornadas, aquí lo tenemos desactivado y nos da todas las que hayan sido filtradas

    'echo'               => 1,
		//un valor de cero nos guarda los resultados para eventuales operaciones en PHP posteriores

    'depth'              => 0
		//0 : todas las cats y subcats
		//-1 : idem, pero sin distinguir (lista 'plana', sin sub-lista)
		//1 : sólo categorías pariente
		//n : 2, 3 etc, número de niveles a tener en cuenta

	);
	?>

El menú, finalmente

Una vez hayamos especificado los valores que nos interesen para páginas y categorías, podemos escribir debajo los dos template tags que nos traerán esos resultados entre la apertura y cierre de la lista:

	<ul>
		<?php wp_list_pages( $paginas ); ?>
		<?php wp_list_categories( $categorias ); ?>
	</ul>

Esperamos que esta mirada en detalle a estos dos template tags os sea útil para construir adecuadamente vuestros menús de navegación.

35 Funciones útiles para functions.php en Wordpress

Normalmente cualquier tema de Wordpress que utilicemos, ya sea externo o creado por nosotros, tiene un archivo functions.php donde se agrupan las funciones que va a utilizar nuestro tema. Su utilidad puede ser de lo más variada, desde cambiar comportamientos por defecto de Wordpress a funciones útiles típicas de cualquier aplicación en PHP.

Seguramente cualquier diseñador que utilice Wordpress con frecuencia tiene una serie de funciones que utiliza en todos sus diseños. Yo suelo utilizar un tema vacío (Starkers) que me permite empezar todo de cero, dándome mayor maniobrabilidad. Pero incluyo ciertas variaciones propias, entre ellas mis propios archivos functions.php y style.css.

Estuve pensando en un principio en incluir en este artículo mi archivo functions.php, en el que incluyo una serie de funciones de uso frecuente. Pero luego decidí ampliar el artículo incluyendo funciones sugeridas por distintos autores, para lograr una cobertura mucho más amplia de funciones útiles. Empezamos.

Cargar jQuery

Mediante esta función nos aseguramos de que se incluye una copia de jQuery. Se obtiene desde los servidores de Google para ahorrarnos algo de ancho de banda y para conseguir en teoría más rapidez para el usuario. Si tenemos alguna función relacionada con jQuery debería ir debajo de esta.

PHP:
  1. if ( !is_admin() ) {
  2.        wp_deregister_script('jquery');
  3.        wp_register_script('jquery', ("http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"), false);
  4.        wp_enqueue_script('jquery');
  5.     }

Crear Widgets

Esta función seguro que es de sobra conocida y viene además en la práctica totalidad de temas, incluso en starkers. Se puede adaptar en función del nombre del widget, y de lo que queramos que aparezca antes y después del widget.

PHP:
  1. if (function_exists('register_sidebar')) {
  2.         register_sidebar(array(
  3.             'name' => 'Sidebar Widgets',
  4.             'id'   => 'sidebar-widgets',
  5.             'description'   => 'These are widgets for the sidebar.',
  6.             'before_widget' => '<div id="%1$s" class="widget %2$s">',
  7.             'after_widget'  => '</div>',
  8.             'before_title'  => '<h2>',
  9.             'after_title'   => '</h2>'
  10.         ));
  11.     }

Taxonomías

El uso de esta función lo he explicado en este artículo sobre cómo crear Taxonomías en mi blog.

PHP:
  1. function taxonomias_propias() {
  2.         register_taxonomy('artista', 'post', array(
  3.                     'hierarchical' => false, 'label' => 'Artista',
  4.                     'query_var' => true, 'rewrite' => true));
  5.         register_taxonomy('album', 'post', array(
  6.                     'hierarchical' => false, 'label' => 'Album',
  7.                     'query_var' => true, 'rewrite' => true));
  8.         register_taxonomy('genero', 'post', array(
  9.                     'hierarchical' => false, 'label' => 'Género',
  10.                     'query_var' => true, 'rewrite' => true));
  11.         register_taxonomy('autor', 'post', array(
  12.                     'hierarchical' => false, 'label' => 'Autor',
  13.                     'query_var' => true, 'rewrite' => true));
  14.         register_taxonomy('duracion', 'post', array(
  15.                     'hierarchical' => false, 'label' => 'Duración',
  16.                     'query_var' => true, 'rewrite' => true));
  17.         register_taxonomy('fecha', 'post', array(
  18.                     'hierarchical' => false, 'label' => 'Fecha',
  19.                     'query_var' => true, 'rewrite' => true));
  20.     }
  21.     add_action('init', 'taxonomias_propias', 0);

Crear Taxonomías en páginas

La anterior función creaba taxonomías en las entradas de nuestro blog. Veremos cómo crearlas en las páginas.
Fuente: http://justintadlock.com/archives/2009/11/09/excerpts-and-taxonomies-for-pages-in-wordpress-2-9
Hay que recordar que en Wordpress 2.9 las Taxonomías no admiten jerarquización, como las categorías. Como ejemplo, creamos una Taxonomía para páginas llamada "people":

PHP:
  1. register_taxonomy( 'people', 'page', array( 'hierarchical' => false, 'label' => 'People', 'query_var' => true, 'rewrite' => true ) );
  2.  
  3. add_action( 'admin_menu', 'my_page_taxonomy_meta_boxes' );
  4.  
  5. function my_page_taxonomy_meta_boxes() {
  6.     foreach ( get_object_taxonomies( 'page' ) as $tax_name ) {
  7.         if ( !is_taxonomy_hierarchical( $tax_name ) ) {
  8.             $tax = get_taxonomy( $tax_name );
  9.             add_meta_box( "tagsdiv-{$tax_name}", $tax->label, 'post_tags_meta_box', 'page', 'side', 'core' );
  10.         }
  11.     }
  12. }

Crear Campos Personalizados Globales

Esta función la he descubierto no hace mucho. Fuente: http://digwp.com/2009/09/global-custom-fields-take-two/. Como sabemos, los campos personalizados normales (Custom Fields) en Wordpress están asignados a cada entrada o a cada página. Es decir, que un dato que se repita por toda la web habría que estar incorporándolo en cada entrada, en cada página, etc.. Gracias a la función que veremos a continuación podemos crear Campos Personalizados Globales, disponibles en todas las páginas y entradas. Su ubicación es un poco extraña, ya que una vez creados aparecen en el menú de opciones dentro del administrador.

PHP:
  1. <?php
  2. add_action('admin_menu', 'add_gcf_interface');
  3.  
  4. function add_gcf_interface() {
  5.     add_options_page('Global Custom Fields', 'Global Custom Fields', '8', 'functions', 'editglobalcustomfields');
  6. }
  7.  
  8. function editglobalcustomfields() {
  9.     ?>
  10.     <div class='wrap'>
  11.     <h2>Global Custom Fields</h2>
  12.     <form method="post" action="options.php">
  13.     <?php wp_nonce_field('update-options') ?>
  14.  
  15.     <p><strong>My Name:</strong><br />
  16.     <input type="text" name="myname" size="45" value="<?php echo get_option('myname'); ?>" /></p>
  17.  
  18.     <p><strong>Amazon ID:</strong><br />
  19.     <input type="text" name="amazonid" size="45" value="<?php echo get_option('amazonid'); ?>" /></p>
  20.  
  21.     <p><strong>Today's Featured Website:</strong><br />
  22.     <input type="text" name="todaysite" size="45" value="<?php echo get_option('todaysite'); ?>" /></p>
  23.     <p><strong>Welcome Text:</strong><br />
  24.     <textarea name="welcomemessage" cols="100%" rows="7"><?php echo get_option('welcomemessage'); ?></textarea></p>
  25.     <p><input type="submit" name="Submit" value="Update Options" /></p>
  26.     <input type="hidden" name="action" value="update" />
  27.     <input type="hidden" name="page_options" value="myname,amazonid,todaysite,welcomemessage" />
  28.     </form>
  29.     </div>
  30.     <?php } ?>

Para usarlo simplemente hay que escribir echo get_option('welcomemessage'); o echo get_option('todaysite'); etc (relacionados con el ejemplo de la función)

Campos personalizados (Custom Fields)

Fuente: http://www.mattvarone.com/wordpress/useful-functions-for-wordpress/
Esta función permite simplificar el uso de los Campos Personalizados (Custom Fields) que se pueden incorporar en cada entrada o página. Su uso es:
get_custom_field_value( Custom Field Key, Print ); donde:
1. Custom Field Key: ( cadena ) – Nombre del Campo Personalizado que quieres obtener
2. Print: ( booleano, falso por defecto ) – escribe o devuelve el valor.
Ejemplo:

PHP:
  1. <ul>
  2. // gets the value of the custom field featured_image and prints it.
  3. if ( function_exists( 'get_custom_field_value' ) ) get_custom_field_value( 'featured_image', true );
  4. </ul>
  5. </pre>
  6. Y ahora la función:
  7. <pre lang="php" line="1">
  8. function get_custom_field_value( $szKey, $bPrint = false)
  9. {
  10.     global $post;
  11.     $szValue = get_post_meta( $post->ID, $szKey, true );
  12.     if ( $bPrint == false ) return $szValue; else echo $szValue;
  13. }

Permitir comentarios anidados (threaded comments)

Para activar los comentarios anidados hay que añadir un código dentro del head de tu tema justo antes de wp_head. Este código se puede incorporar a functions.php, lo que ayuda a limpiar un poco la zona del head. Precisa que la función que incorpora jQuery esté ubicada por encima de esta dentro de functions.php
Fuente: http://digwp.com/2010/03/wordpress-functions-php-template-custom-functions/

PHP:
  1. function enable_threaded_comments(){
  2.     if (!is_admin()) {
  3.         if (is_singular() AND comments_open() AND (get_option('thread_comments') == 1))
  4.             wp_enqueue_script('comment-reply');
  5.         }
  6. }
  7. add_action('get_header', 'enable_threaded_comments');

Eliminar basura del área head

Según algunos autores, Wordpress ubica gran cantidad de código no muy útil en el head. Cosas como el número de versión, y enlaces WLW, RSD...
Para limpiar todo esto basta con esta función.
Fuente: http://digwp.com/2010/03/wordpress-functions-php-template-custom-functions/

PHP:
  1. remove_action('wp_head', 'rsd_link');
  2. remove_action('wp_head', 'wp_generator');
  3. remove_action('wp_head', 'feed_links', 2);
  4. remove_action('wp_head', 'index_rel_link');
  5. remove_action('wp_head', 'wlwmanifest_link');
  6. remove_action('wp_head', 'feed_links_extra', 3);
  7. remove_action('wp_head', 'start_post_rel_link', 10, 0);
  8. remove_action('wp_head', 'parent_post_rel_link', 10, 0);
  9. remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0);

Añadir Google Analytics al footer

Esta función nos permite añadir de una manera sencilla Google Analytics.
Sólo requiere cambiar UA-XXXXX-X por tu código (el que te provee Google Analytics). Esta función utiliza el sistema ga.js, pero se puede cambiar a cualquiera de los otros que ofrece Analytics.
Fuente: http://digwp.com/2010/03/wordpress-functions-php-template-custom-functions/

PHP:
  1. function add_google_analytics() {
  2.     echo '<script src="http://www.google-analytics.com/ga.js" type="text/javascript"></script>';
  3.     echo '<script type="text/javascript">';
  4.     echo 'var pageTracker = _gat._getTracker("UA-XXXXX-X");';
  5.     echo 'pageTracker._trackPageview();';
  6.     echo '</script>';
  7. }
  8. add_action('wp_footer', 'add_google_analytics');

Ajustar el tamaño del extracto

Como sabemos, podemos mostrar el contenido completo de un artículo o su extracto. El extracto tiene un límite de 55 palabras. Esta función te permitirá especificar cualquier longitud (cambia el número 20 a la cifra que quieras).
Fuente: http://digwp.com/2010/03/wordpress-functions-php-template-custom-functions/

PHP:
  1. function custom_excerpt_length($length) {
  2.     return 20;
  3. }
  4. add_filter('excerpt_length', 'custom_excerpt_length');

Reducir el tamaño del texto

Función para reducir el número de caracteres de una entrada.
Fuente: http://www.mattvarone.com/wordpress/functionsphp-wordpress-themes/
Ejemplo de uso:
1. Caracteres: ( número int, por defecto 250 ) – Número de caracteres que se muestran.
2. Cola: ( cadena, por defecto "…" ) – Texto a mostrar tras el texto cortado.
3. Mostrar: ( booleano, por defecto: true ) – Imprime la lista o lo devuelve para PHP.

PHP:
  1. // wordpress loop
  2. while (have_posts()) : the_post();
  3.       <h1>the_title(); </h1>
  4.       <div class="entry">
  5. // se cortará el texto al llegar a los 150 caracteres
  6. if ( function_exists( 'shorten_text' ) ) shorten_text( 150 );
  7. </div>
  8. endwhile;

La función que va en functions.php es:

PHP:
  1. function shorten_text( $iChars = 250, $szTail = "...", $bPrint = true )
  2. {
  3. global $post;
  4. $szText = strip_tags( trim( $post->post_content ) );
  5. $szText = substr( $szText, 0, $iChars );
  6. $szText = substr( $szText, 0, strrpos( $szText , ' ' ) ) . $szTail;
  7. apply_filters('the_excerpt', $szText);
  8. if ( $bPrint == true ) echo $szText; else return $szText;
  9. }

Limitar el número de palabras

Ejemplo de uso

PHP:
  1. $longtext= get_the_excerpt(); // Uso con el extracto, aunque se puede hacer con el contenido completo.
  2. $permalink = get_permalink($post->ID);
  3. $shorttext=limit_words($longtext, 13,'&#91;...&#93;&nbsp;&nbsp;<a href="'. $permalink . '" class="mas" title="Ir al art&iacute;culo">M&aacute;s&raquo;</a>' );
  4. echo '<p>' . $shorttext . '</p>';

La función que va en functions.php es:

PHP:
  1. function limit_words( $str, $num, $append_str='' ) {
  2.     $words = preg_split( '/[\s]+/', $str, -1, PREG_SPLIT_OFFSET_CAPTURE );
  3.     if( isset($words[$num][1]) ){
  4.         $str = substr( $str, 0, $words[$num][1] ) . $append_str;
  5.     }
  6.     unset( $words, $num );
  7.     return trim( $str );
  8. }

Cadena de puntos suspensivos personalizadas para el Extracto en Wordpress 2.9+

En los extractos, estos acaban por defecto en "[...]". Esto lo podemos cambiar a lo que queramos con la función que veremos a continuación. Símplemente reemplaza los puntos suspensivos por la cadena de texto que prefieras.
Fuente: http://digwp.com/2010/03/wordpress-functions-php-template-custom-functions/.

PHP:
  1. function custom_excerpt_more($more) {
  2.     return '...';
  3. }
  4. add_filter('excerpt_more', 'custom_excerpt_more');

Añadir un favicon a tu blog

Con esta función podrás emplazar de manera muy simple un favicon para tu web. Símplemente sube el icono al directorio raíz (el directorio lo puedes cambiar en la función), escribe la función en functions.php y se añadirá automáticamente la línea necesaria en el head de tu página siempre y cuando tengas wp_head en tu fichero head.php de tu tema.
Fuente: http://digwp.com/2010/03/wordpress-functions-php-template-custom-functions/

PHP:
  1. function blog_favicon() {
  2.     echo '<link rel="Shortcut Icon" type="image/x-icon" href="'.get_bloginfo('wpurl').'/favicon.ico" />';
  3. }
  4. add_action('wp_head', 'blog_favicon');

Añadir un favicon a tu área de administración

Igual que el anterior, pero en vez de para la web, esta vez es para tu área de administración. Crea un icono y súbelo al directorio /images/ (puedes cambiar el directorio si quieres)
Fuente: http://digwp.com/2010/03/wordpress-functions-php-template-custom-functions/

PHP:
  1. function admin_favicon() {
  2.     echo '<link rel="Shortcut Icon" type="image/x-icon" href="'.get_bloginfo('stylesheet_directory').'/images/favicon.png" />';
  3. }
  4. add_action('admin_head', 'admin_favicon');

Logo personalizado en el login de admin

Fuente: http://www.chrisdecker.com/wordpress/customize-your-wordpress-admin-panel-login-logo/
Puedes cambiar el logo de Wordpress que sale en el login de la página de administración de tu web por otro de tu elección con esta función. Símplemente crea una imagen no mayor de 328 x 84 y súbela al directorio /images/ de tu servidor con el nombre que pongas en la función (en este caso "customlogofilename.png". Si no lo tuvieras créalo. El código a incluir en functions.php es:

PHP:
  1. function my_custom_login_logo() {
  2.     echo '<style type="text/css">
  3.         h1 a { background-image:url(/images/customlogofilename.png) !important; }
  4.     </style>';
  5. }
  6.  
  7. add_action('login_head', 'my_custom_login_logo');

Eliminar el mensaje de actualización de Wordpress

Permite eliminar el a veces molesto mensaje que aparece en el panel de administración que nos pide que actualicemos nuestra versión de Wordpress.
Fuente: http://digwp.com/2010/03/wordpress-functions-php-template-custom-functions/

PHP:
  1. if (!current_user_can('edit_users')) {
  2.     add_action('init', create_function('$a', "remove_action('init', 'wp_version_check');"), 2);
  3.     add_filter('pre_option_update_core', create_function('$a', "return null;"));
  4. }

Eliminar el mensaje de error en la pantalla de login de admin

Cuando ponemos mal la contraseña un mensaje nos dice que lo que está mal es la contraseña, lo cual no es muy seguro al dar pistas de cual es el error. Con este código en functions.php eliminamos ese problema.

PHP:
  1. add_filter('login_errors',create_function('$a', "return null;"));

Forzar wp-admin a usar SSL

Util para los que tengan un certificado SSL, ya sea propio o compartido. Es más seguro acceder a el área de administración a través de SSL.

PHP:
  1. define('FORCE_SSL_ADMIN', true);

ID de la Categoría en Body y en la clase de la entrada (post)

Por defecto, WordPress no incluye el ID de la categoría de la entrada actual en body_class ni en post_class. Esta función permite añadirlo.
Fuente: http://digwp.com/2010/03/wordpress-functions-php-template-custom-functions/

PHP:
  1. function category_id_class($classes) {
  2.     global $post;
  3.     foreach((get_the_category($post->ID)) as $category)
  4.         $classes [] = 'cat-' . $category->cat_ID . '-id';
  5.         return $classes;
  6. }
  7. add_filter('post_class', 'category_id_class');
  8. add_filter('body_class', 'category_id_class');

Obtener el ID de la primera categoría

Otra función útil cuando tenemos diferentes categorías. Permite obtener el ID de la primera categoría de la entrada actual.
Para usarlo símplemente usa get_first_category_ID(); en el archivo template de tu tema.
Fuente: http://digwp.com/2010/03/wordpress-functions-php-template-custom-functions/

PHP:
  1. function get_first_category_ID() {
  2.     $category = get_the_category();
  3.     return $category[0]->cat_ID;
  4. }

Obtener los comentarios más recientes

Con esta función obtenemos los comentarios más recientes.
Para usarlo escribimos dp_recent_comments(6); en el template de nuestro tema, donde el número entre paréntesis es el número de comentarios que queremos que aparezcan.
Fuente: http://www.wplancer.com/how-to-display-recent-comments-without-using-a-plugin-or-widget/

PHP:
  1. function dp_recent_comments($no_comments = 10, $comment_len = 35) {
  2.     global $wpdb;
  3.     $request = "SELECT * FROM $wpdb->comments";
  4.     $request .= " JOIN $wpdb->posts ON ID = comment_post_ID";
  5.     $request .= " WHERE comment_approved = '1' AND post_status = 'publish' AND post_password =''";
  6.     $request .= " ORDER BY comment_date DESC LIMIT $no_comments";
  7.     $comments = $wpdb->get_results($request);
  8.     if ($comments) {
  9.             foreach ($comments as $comment) {
  10.                 ob_start();
  11.         ?>
  12.         <li>
  13.                     <a href="<?php echo get_permalink( $comment->comment_post_ID ) . '#comment-' . $comment->comment_ID; ?>"><?php echo dp_get_author($comment); ?>:</a>
  14.                     <?php echo strip_tags(substr(apply_filters('get_comment_text', $comment->comment_content), 0, $comment_len)); ?>
  15.         </li>
  16.         <?php
  17.         ob_end_flush();
  18.             }
  19.     } else {
  20.             echo '<li>'.__('No comments', 'banago').'';
  21.     }
  22. }
  23. function dp_get_author($comment) {
  24.     $author = "";
  25.     if ( empty($comment->comment_author) )
  26.         $author = __('Anonymous', 'banago');
  27.     else
  28.         $author = $comment->comment_author;
  29.     return $author;
  30. }

Como vemos en:

PHP:
  1. function dp_recent_comments($no_comments = 10, $comment_len = 35)

tenemos por defecto 10 comentarios con una longitud de 35 caracteres, que podemos cambiar.

Crear un código corto (shortcode) para el enlace de portada

Esta función convierte el shortcode [home] a un enlace a tu página de inicio. Para usarlo símplemente escribe [home] en cualquier entrada de tu blog y Wordpress ejecutará la función myHomePage y mostrará el enlace a la home. Puedes probarla para crear otros enlaces. Tienes que cambiar domain.tld por la URL de tu Home, etc..

PHP:
  1. function myHomePage() {
  2. return '<a href="http://domain.tld/"
  3. title="My Website Homepage">My Homepage</a>';
  4. }
  5. add_shortcode('home', 'myHomePage');

Eliminar la versión de Wordpress del header y del feed

PHP:
  1. add_filter('the_generator','killVersion');
  2. function killVersion() { return ''; }
  3. remove_action('wp_head', 'wp_generator');

Limpiar pigbacks y trackbacks de los comentarios

PHP:
  1. function cleanPings($comment, $args, $depth) {
  2. $GLOBALS['comment'] = $comment;
  3. echo '<li>'.comment_author_link().'</li>';
  4. }

Para usarlo, normalmente en comments.php:

PHP:
  1. wp_list_comments('type=pings&callback=cleanPings');

Contar el número de comentarios (sin trackbacks ni pingbacks)

Filtramos la función comments_number de Wordpress para obtener sólo el número de comentarios, ya que normalmente esta función incluye también pingbacks y trackbacks.
Para usarlo símplemente pon comments_number() donde quieras mostrar el número.

PHP:
  1. function countComments($count) {
  2. global $wp_query;
  3. return count($wp_query->comments_by_type['comment']);
  4. }
  5. add_filter('get_comments_number', 'countComments', 0);

Activar miniaturas (thumnails), en Wordpress 2.9+

Podéis ver cómo funciona en este artículo de mi blog: http://www.emenia.es/nuevo-en-wordpress-2-9-miniaturas-de-entrada-post-thumbnails/.

Para usarlo símplemente hay que poner the_post_thumbnail(); dentro del loop.

PHP:
  1. if (function_exists('add_theme_support')) { add_theme_support('post-thumbnails'); }

Obtener y mostrar la primera imagen de una entrada

Con esta función obtenemos la primera imagen que se encuentre dentro del contenido de una entrada.
Fuente: http://www.mattvarone.com/wordpress/useful-functions-for-wordpress/
Los parámetros son:
1. Número de Imagen: Número de la imagen que deseas obtener (por defecto 0, que es por el número que empieza).
2. Mostrar: ( booleano, por defecto false ) – Muestra o devuelve el valor para php.
Uso de la función:

PHP:
  1. <ul>
  2. if ( function_exists( 'get_post_image' ) ) get_post_image( 0, true );
  3. </ul>

Y la función, que irá en functions.php, es:

PHP:
  1. function get_post_image( $iImageNumber = 0, $bPrint = false )
  2. {
  3.     global $post;
  4.     $szPostContent = $post->post_content;
  5.     $szSearchPattern = '~<img [^\>]*\ />~';
  6.     preg_match( $szSearchPattern, $szPostContent, $pics );
  7.     if ( $bPrint == true && !empty($pics) ) echo $pics[$iImageNumber]; else return $pics[$iImageNumber];
  8. }

Obtener los artículos más recientes

Fuente: http://www.mattvarone.com/wordpress/functionsphp-wordpress-themes/
Parámetros:
1. Cantidad: (por defecto 5 ) – Número de entradas para mostrar.
2. Categorías: (por defecto todas las categorías ) – Categorías a incluír o excluir.
3. HTML anterior: ( por defecto li ) – HTML antes del enlace al artículo.
4. HTML después: (por defecto /li ) – HTML después del enlace.
Ejemplo de uso:

PHP:
  1. <ul>
  2. // obtiene las 10 últimas entradas de todas las categorías excepto de la categoría 5
  3. if ( function_exists( 'wp_list_recent_posts' ) ) wp_list_recent_posts( 10, '-5' );
  4. </ul>
  5. </pre>
  6. La función que va en functions.php es:
  7. <pre lang="php" line="1">
  8. function wp_list_recent_posts( $iAmount = 5, $szCat = null, $szBefore = "<li>", $szAfter = "</li>" )
  9. {
  10.     ( $szCat != null ) ? $szCat = "&cat=" . $szCat : $szCat ;
  11.     $aRecentPosts = new WP_Query( "showposts=" . $iAmount . $szCat );
  12.     while($aRecentPosts->have_posts()) : $aRecentPosts->the_post();
  13.     $szReturn .= $szBefore . '<a href="' . get_permalink() . '">' . get_the_title() . '</a>' . $szAfter;
  14.     endwhile;
  15.     echo $szReturn;
  16. }

Obtener los artículos más populares basado en el número de comentarios

Fuente: http://www.gilbertpellegrom.co.uk/top-wordpress-functions-for-your-functions-php-file/
Se puede cambiar el número de artículos cambiando LIMIT al final de $popularposts (en el ejemplo a continuación mostrará los 6 primeros).

PHP:
  1. function get_popular_posts() {
  2.     global $wpdb;
  3.     $now = gmdate("Y-m-d H:i:s",time());
  4.     $lastmonth = gmdate("Y-m-d H:i:s",gmmktime(date("H"), date("i"), date("s"), date("m")-12,date("d"),date("Y")));
  5.     $popularposts = "SELECT ID, post_title, COUNT($wpdb->comments.comment_post_ID) AS 'stammy' FROM $wpdb->posts, $wpdb->comments WHERE comment_approved = '1' AND $wpdb->posts.ID=$wpdb->comments.comment_post_ID AND post_status = 'publish' AND post_date <'$now' AND post_date> '$lastmonth' AND comment_status = 'open' GROUP BY $wpdb->comments.comment_post_ID ORDER BY stammy DESC LIMIT 6";
  6.     $posts = $wpdb->get_results($popularposts);
  7.     $popular = '';
  8.     if($posts){
  9.         foreach($posts as $post){
  10.             $post_title = stripslashes($post->post_title);
  11.             $guid = get_permalink($post->ID);
  12.             $popular .= '<li><a href="'.$guid.'" title="'.$post_title.'">'.$post_title.'</a></li>';
  13.             $i++;
  14.         }
  15.     }
  16.     echo $popular;
  17. }

Mostrar el Copyright

Esta función muestra una información de copyright dinámica, es decir, se irá actualizando cada año.
Fuente: http://www.mattvarone.com/wordpress/useful-functions-for-wordpress/
Parámetros:
1. Año: ( por defecto el año actual ) – Si se da un año previo al actual se mostrará así: 2006 – 2008.
2. Separador: ( por defecto: " – " ) – Texto utilizado para separar los años (en el caso de que se haya declarado un año previo al actual).
3. Cola: ( por defecto ". Todos los derechos reservados." ) – Texto a mostrar tras la información del copyright.

Uso de la función:

PHP:
  1. if ( function_exists( 'display_copyright' ) ) display_copyright();
  2. // Mostrará: <div id="copyright">&amp;copy; 2008. Blog Name. Todos los derechos reservados.</div>
  3. if ( function_exists( 'display_copyright' ) ) display_copyright( 2006, ' a ', '. Some rights reserved.' );
  4. // Mostrará: <div id="copyright">&amp;copy; 2006 a 2008. Blog Name. Some rights reserved.</div>

La función que va en functions.php es:

PHP:
  1. function display_copyright( $iYear = null, $szSeparator = " - ", $szTail = '. Todos los derechos reservados.' )
  2. {
  3.     echo '<div id="copyright">' . display_years( $iYear, $szSeparator, false ) . ' &copy; ' . get_bloginfo('name') . $szTail . '</div>';
  4. }
  5.  
  6. function display_years( $iYear = null, $szSeparator = " - ", $bPrint = true )
  7. {
  8.     $iCurrentYear = ( date( "Y" ) );
  9.     if ( is_int( $iYear ) )
  10.     {
  11.         $iYear = ( $iCurrentYear> $iYear ) ? $iYear = $iYear . $szSeparator . $iCurrentYear : $iYear;
  12.     } else {
  13.         $iYear = $iCurrentYear;
  14.     }
  15.     if ( $bPrint == true ) echo $iYear; else return $iYear;
  16. }

Botón para abrir los PDF en Google Docs

Uso:

PHP:
  1. [pdf href="http://yoursite.com/linktoyour/file.pdf"]View PDF[/pdf]
  2. Fuente: <a href="http://www.wpfunc.com/wordpress/create-pdf-button.html" title="Ir al artículo">http://www.wpfunc.com/wordpress/create-pdf-button.html</a>

Función en functions.php:

PHP:
  1. function pdflink($attr, $content) {
  2.     return '<a class="pdf" href="http://docs.google.com/viewer?url=' . $attr['href'] . '">'.$content.'</a>';
  3. }
  4. add_shortcode('pdf', 'pdflink');

Añade un ID al ul que se encuentra dentro de un menu desplegable

Si hemos creado un menú desplegable del tipo wp_list_pages('exclude=116,122&title_li='); veremos que se crea un menú en el que el ul principal tiene la clase topnav. Si queremos que el ul anidado tenga otra clase (por ejemplo subnav) escribiríamos esta función:

PHP:
  1. function add_menuclass($ulclass) {
  2. return preg_replace('/<ul>/', '<ul class="subnav">', $ulclass, 1);
  3. }
  4. add_filter('wp_list_pages','add_menuclass');

Cambiar el avatar por defecto

Primero creamos un nuevo avatar de 100x100 pixels. Luego lo subimos a /wp-content/themes/tu-tema/images/, grabándolo como gravatar.jpg.

Ahora añadimos este código a nuestro functions.php:

PHP:
  1. if ( !function_exists('fb_addgravatar') ) {
  2.     function fb_addgravatar( $avatar_defaults ) {
  3.     $myavatar = get_bloginfo('template_directory').'/images/gravatar.jpg';
  4.     //avatar por defecto
  5.     $avatar_defaults[$myavatar] = 'Nuevo gravatar';
  6.     return $avatar_defaults;
  7.     }
  8.  add_filter( 'avatar_defaults', 'fb_addgravatar' );
  9. }

Añade los scripts de Contact Form 7 sólo en las páginas seleccionadas

Suelo utilizar Contact Form 7, pero lo malo es que sus scripts se añaden en todas las páginas, esté presente el formulario o no. Con esta función se evita ese problema. Por ejemplo, si sólo lo quiero en la página con ID=33:

PHP:
  1. function add_wpcf7_scripts() {
  2.     if ( is_page('33') )
  3.         wpcf7_enqueue_scripts();
  4. }
  5. if ( ! is_admin() && WPCF7_LOAD_JS )
  6.     remove_action( 'init', 'wpcf7_enqueue_scripts' );
  7. add_action( 'wp', 'add_wpcf7_scripts' );

¿Te gustó este post? ¡Compártelo! Bitacoras.com TwitThis Facebook Meneame Google Bookmarks del.icio.us Live Technorati Ping.fm Wikio Turn this article into a PDF! E-mail this story to a friend! Print this article!

Comprobar si un campo personalizado está vacío

Si queremos imprimir (mostrar) los campos personalizados que hayamos creado únicamente cuando los hemos llenado (y por tanto evitarnos el código HTML que comúnmente les acompaña en los templates), aquí tenemos el código para hacerlo.

<?php $precio = get_post_meta($post->ID, "precio", true);
if ($precio !=''){
?>
	<div id="listar-precio">
		<h3>Precio</h3>
		<?php echo get_post_meta($post->ID, "precio", true); ?>
	</div>
<?php } ?>

Primero me hago con lo que hubiere en en campo “precio”, luego miro que no esté vacío y permito que se imprima.

En este caso, si estamos creando un magazine sobre conciertos y nuestros campos personalizados son del tipo:

  • Lugar: (valor que le hayamos dado al campo)
  • Fecha: (valor que le hayamos dado al campo)
  • Precio: (valor que le hayamos dado al campo)

Si en un cierto artículo no hemos rellenado esos campos por la razón que sea, no nos aparecerá la lista vacía. Tendríamos que repetir el código para cada elemento.

Embedder documentos con enlace para descargar con shortcode

Hola a todos, he buscado la forma de embeber documentos pdf o de power point, y que lo último aún no he logrado, porque aún sigo desarrollando la función, quería mostrarles como embeber un documento pdf en nuestro artículo mediante shortcode alojando en el servidor, en Google Docs o donde sea...

Ya en un artículo anterior nos enseñaron como hacer un enlace para vista previa de un pdf, pero yo quería embedder esa vista previa y generarle además su enlace respectivo para desargarlo así que me puse a investigar y he creado un shortcode que permite hacer eso:

En el functions.php agregan esto:

PHP:
  1. /*VISTA PREVIA DE DOCUMENTOS*/
  2. function docslink($attr, $content) {
  3. return '<iframe src="http://docs.google.com/gview?url=' . $attr['href'] . '&embedded=true" style="width:580px; height:500px;" frameborder="0"></iframe></ br><div style="font:11px Arial, Helvetica, sans-serif; color:#1b3e5c; font-weight:bold;"><a href="'. $attr['href'] .'">'.$content.'</a></div>';
  4. }
  5. add_shortcode('docs', 'docslink');

Lo que hace el shortcode es generar la vista previa del documento alojado ya sea en nuestro servidor o en uno externo, y generar el enlace de descarga respectivo; se utiliza de esta manera:

HTML:
  1. [docs href="enlace del archivo para generar vista previa y enlace"]Texto que tendrá el enlace de descarga[/docs]

Espero que les haya servido, ya lo probé y me funciona de maravilla y sin instalar ningún plugin... Muchas gracias...

¿Te gustó este post? ¡Compártelo! Bitacoras.com TwitThis Facebook Meneame Google Bookmarks del.icio.us Live Technorati Ping.fm Wikio Turn this article into a PDF! E-mail this story to a friend! Print this article!

Embedder documentos con enlace para descargar con shortcode

Hola a todos, he buscado la forma de embeber documentos pdf o de power point, y que lo último aún no he logrado, porque aún sigo desarrollando la función, quería mostrarles como embeber un documento pdf en nuestro artículo mediante shortcode alojando en el servidor, en Google Docs o donde sea...

Ya en un artículo anterior nos enseñaron como hacer un enlace para vista previa de un pdf, pero yo quería embedder esa vista previa y generarle además su enlace respectivo para desargarlo así que me puse a investigar y he creado un shortcode que permite hacer eso:

En el functions.php agregan esto:

PHP:
  1. /*VISTA PREVIA DE DOCUMENTOS*/
  2. function docslink($attr, $content) {
  3. return '<iframe src="http://docs.google.com/gview?url=' . $attr['href'] . '&embedded=true" style="width:580px; height:500px;" frameborder="0"></iframe></ br><div style="font:11px Arial, Helvetica, sans-serif; color:#1b3e5c; font-weight:bold;"><a href="'. $attr['href'] .'">'.$content.'</a></div>';
  4. }
  5. add_shortcode('docs', 'docslink');

Lo que hace el shortcode es generar la vista previa del documento alojado ya sea en nuestro servidor o en uno externo, y generar el enlace de descarga respectivo; se utiliza de esta manera:

HTML:
  1. [docs href="enlace del archivo para generar vista previa y enlace"]Texto que tendrá el enlace de descarga[/docs]

Espero que les haya servido, ya lo probé y me funciona de maravilla y sin instalar ningún plugin... Muchas gracias...

¿Te gustó este post? ¡Compártelo! Bitacoras.com TwitThis Facebook Meneame Google Bookmarks del.icio.us Live Technorati Ping.fm Wikio Turn this article into a PDF! E-mail this story to a friend! Print this article!

Evitar HTML en los comentarios

Como ya sabrás, normalmente se pueden usar unas cuantas etiquetas HTML en el área de comentarios, como negritas, citas, añadir enlaces y alguno más. Pero si quieres eliminar esta posibilidad para que, por ejemplo, no te pongan enlaces a sitios externos con palabras clave y cosas así puedes evitarlo muy fácilmente.

Solo hay que recurrir al fichero functions.php de tu tema activo y editarlo para añadirle este código:

PHP:
  1. // Esto es lo que pasa cuando se publica un comentario
  2. function plc_comment_post( $incoming_comment ) {
  3. // convierte todo lo que haya en un comentario y lo muestra literalmente
  4. $incoming_comment['comment_content'] = htmlspecialchars($incoming_comment['comment_content']);
  5. // la única excepción son las citas sencillas, que no pueden ser #039; ya que WordPress las marca como spam
  6. $incoming_comment['comment_content'] = str_replace( "'", '&amp;apos;', $incoming_comment['comment_content'] );
  7. return( $incoming_comment );
  8. }
  9. // Esto es lo que pasará antes de mostrar un comentario
  10. function plc_comment_display( $comment_to_display ) {
  11. // Vuelve a habilitar las citas sencillas
  12. $comment_to_display = str_replace( '&amp;apos;', "'", $comment_to_display );
  13. return $comment_to_display;
  14. }
  15. add_filter( 'preprocess_comment', 'plc_comment_post', '', 1);
  16. add_filter( 'comment_text', 'plc_comment_display', '', 1);
  17. add_filter( 'comment_text_rss', 'plc_comment_display', '', 1);
  18. add_filter( 'comment_excerpt', 'plc_comment_display', '', 1);

Guardas y ya está. Lo que hace este código es básicamente convertir los códigos a entidades HTML para que se muestren y no sean códigos activos.

Si quieres, el autor ha convertido este código en un plugin que puedes descargar al final de la entrada.

¿Te gustó este post? ¡Compártelo! Bitacoras.com TwitThis Facebook Meneame Google Bookmarks del.icio.us Live Technorati Ping.fm Wikio Turn this article into a PDF! E-mail this story to a friend! Print this article!

Comprimir nuestro HTML

WordPress, por defecto, envía al ordenador del usuario nuestro site en HTML descomprimido. Es decir, tal cual, de modo que el navegador de nuestros visitantes debe realizar algo más de trabajo que si nuestro HTML estuviera totalmente compactado.

Usando zlib, una librería nativa de PHP, podremos comprimir los archivos que enviemos de forma notable y con ello dar más potencia y rapidez a nuestro site.

Para ello, vamos primero a hacer un test y comprobar que nuestro servidor tiene instalado el módulo de zlib para nosotros: creamos un archivo llamado index.php y pegamos en él lo siguiente:

<? php phpinfo (); ?>

Recordemos quitar el espacio en la apertura del php, añadido aquí a efectos de muestra. Luego lo subimos a una nueva carpeta en nuestro host llamada /test-zlib, y apuntamos nuestro navegador hasta dicho archivo, para ver si nuestra configuración tiene disponible zlib o no.

Si es el caso, iremos al header.php de nuestro tema en uso y pegaremos, antes del DOCTYPE (inicio del HTML), lo siguiente :

<? php
ini_set ('zlib.output_compression', 'On') ;
ini_set ('zlib.output_compression_level', '1') ;
?>

Guardamos y regresamos a nuestro site. Ahora deberíamos poder disfrutar de nuestro HTML ‘comprimido’ de más rápida carga.

Si queréis verificar con detalle cuánto ancho de banda nos ahorra este truco, podréis hacer la comparación por ejemplo en: http://www.port80software.com

Esperamos vuestros comentarios comentarios.

Comprimir nuestro HTML

WordPress, por defecto, envía al ordenador del usuario nuestro site en HTML descomprimido. Es decir, tal cual, de modo que el navegador de nuestros visitantes debe realizar algo más de trabajo que si nuestro HTML estuviera totalmente compactado.

Usando zlib, una librería nativa de PHP, podremos comprimir los archivos que enviemos de forma notable y con ello dar más potencia y rapidez a nuestro site.

Para ello, vamos primero a hacer un test y comprobar que nuestro servidor tiene instalado el módulo de zlib para nosotros: creamos un archivo llamado index.php y pegamos en él lo siguiente:

<? php phpinfo (); ?>

Recordemos quitar el espacio en la apertura del php, añadido aquí a efectos de muestra. Luego lo subimos a una nueva carpeta en nuestro host llamada /test-zlib, y apuntamos nuestro navegador hasta dicho archivo, para ver si nuestra configuración tiene disponible zlib o no.

Si es el caso, iremos al header.php de nuestro tema en uso y pegaremos, antes del DOCTYPE (inicio del HTML), lo siguiente :

<? php
ini_set ('zlib.output_compression', 'On') ;
ini_set ('zlib.output_compression_level', '1') ;
?>

Guardamos y regresamos a nuestro site. Ahora deberíamos poder disfrutar de nuestro HTML ‘comprimido’ de más rápida carga.

Si queréis verificar con detalle cuánto ancho de banda nos ahorra este truco, podréis hacer la comparación por ejemplo en: http://www.port80software.com

Esperamos vuestros comentarios comentarios.

WordPress 2010

Si quieres ver el aspecto del que será el nuevo tema por defecto de WordPress, conocido como WordPress 2010, ya puedes seguir su desarrollo en el blog que irá mostrando sus cambios y evolución: 2010 Theme Development.

Personalmente me parece un acierto el aspecto claro, una tipografía mayor, los elementos HTML, el menú desplegable de páginas, el ancho mayor que Kubrick y el CSS utilizado para imágenes y la galería, no así la tipografía utilizada (serif) y, quizás, la excesiva altura de la cabecera.

Y a ti ¿que te parece?

Contenido exclusivo para suscriptores al Feed

¡Gracias por seguirnos a diario!. Premiamos tu fidelidad ofreciéndote habitualmente contenidos exclusivos. Hoy puedes descargar:

Clic aquí para iniciar la descarga Guía para Administrar Wordpress

¿Te gustó este post? ¡Compártelo! Bitacoras.com TwitThis Facebook Meneame Google Bookmarks del.icio.us Live Technorati Ping.fm Wikio Turn this article into a PDF! E-mail this story to a friend! Print this article!

Get Adobe Flash playerPlugin by wpburn.com wordpress themes