Script para dividir URL. Muy útil para qTranslate

Me encontré más de una vez con el problema de hacer funcionar el plugin qTranslate con otros plugins o scripts. A veces el fantástico qTranslate no es reconocido por otros plugins, o por scripts que añadimos.

Se me ocurrió una manera un poco casera pero eficaz para solucionar estos problemas y poder utilizar the_Permalink dentro del Loop de wordpress, para todos los idiomas que tenga activados.

Para esto necesitamos tener activadas las url amigables de nuestro WordPress.
Vamos a Settings->Permalinks y activamos el modo post.

Y hacemos lo mismo para el qTranslate. En Settings ->Idiomas, activamos “Usar modo de pre-ruta (Por defecto, pone /es/ delante de la URL)”.

Este script está escrito para poder hacer funcionar el plugin All-in-One Event Calendar cuyos enlaces a los posts de eventos no funcionaban para los idiomas. Pero os servirá para cualquier situación, ya que estamos trabajando en la url.
Así venían las url de los posts de eventos:

http://example.com/ai1ec_event/mi_evento/?instance_id=1

Y ahora el script:

<?php
$permalink=esc_attr( get_permalink($event->post_id ) . $event->instance_id );
list( $http, $nada, $domain, $ai1ec_event, $eventid, $instanceid,)=explode("/", $permalink);
$engpermalink=$http . "//" . $domain .  "/en/" . $ai1ec_event  . "/" . $eventid . "/" . $instanceid;
$catpermalink=$http . "//" . $domain .  "/CA/" . $ai1ec_event  . "/" . $eventid . "/" . $instanceid;
?>

Lo que hacemos con las primeras dos líneas de código, es dividir la url del permalink en cachitos, asignando una variable a cada parte comprendida entre los caracteres “/”.
Luego la recomponemos, insertando en el lugar apropiado /en/ para ingles, y /CA/ para catalán.
A partir de aquí la variable $engpermalink será mi Permalink para el ingles y $catpermalink para el catalán.
Así que, en mi loop, pondré este código para que los Permalinks cambien en función del idioma en el que se encuentre quien navega:


 <?php if (qtrans_getLanguage() == 'es') : ?>
<h4><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php echo the_title(); ?></a></h4>
           <?php elseif (qtrans_getLanguage() == 'en') : ?>
<h4><a href="<?php echo $engpermalink ;?>" title="<?php the_title(); ?>"><?php echo the_title(); ?></a></h4>
           <?php elseif (qtrans_getLanguage() == 'ca') : ?>
<h4><a href="<?php echo $catpermalink ;?>" title="<?php the_title(); ?>"><?php echo the_title(); ?></a></h4>
<?php endif; ?>

Y listo!

Aquí el código completo para el Loop

<?php get_header(); ?>
<?php
$permalink=esc_attr( get_permalink($event->post_id ) . $event->instance_id );
list( $http, $nada, $domain, $ai1ec_event, $eventid, $instanceid,)=explode("/", $permalink);
$engpermalink=$http . "//" . $domain .  "/en/" . $ai1ec_event  . "/" . $eventid . "/" . $instanceid;
$catpermalink=$http . "//" . $domain .  "/CA/" . $ai1ec_event  . "/" . $eventid . "/" . $instanceid;
?>

 <?php if(have_posts()) : while(have_posts()) : the_post(); ?>
<div class="the_content">
      <?php if (qtrans_getLanguage() == 'es') : ?>
<h4><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php echo the_title(); ?></a></h4>
           <?php elseif (qtrans_getLanguage() == 'en') : ?>
<h4><a href="<?php echo $engpermalink ;?>" title="<?php the_title(); ?>"><?php echo the_title(); ?></a></h4>
           <?php elseif (qtrans_getLanguage() == 'ca') : ?>
<h4><a href="<?php echo $catpermalink ;?>" title="<?php the_title(); ?>"><?php echo the_title(); ?></a></h4>
<?php endif; ?>
		<?php the_content(); ?>
<?php endwhile; // end of the loop. ?>
</div><!--the_content-->