Filtra la URL de next_posts_link y previous_posts_link

2

Estoy trabajando con el qTranslate plugin para crear un sitio web multilingüe. El complemento hace un excelente trabajo de traducción, excepto en next_posts_link & previous_posts_link etiquetas de plantilla.

Cuando un usuario ha seleccionado un idioma diferente, la URL debe cambiar de:

enlace (para el idioma predeterminado)

a

enlace (para el idioma francés)

El complemento proporciona funciones para la modificación / traducción de URL utilizando la función qtrans_convertURL($url) . El problema que tengo es encontrar un gancho o filtro adecuado que me permita modificar la salida de la URL mediante next_posts_link & Etiquetas de la plantilla anterior_posts_link.

Los dos filtros de WordPress más cercanos que he encontrado son:

add_filter('next_posts_link_attributes', 'my_next_attr');
add_filter('previous_posts_link_attributes', 'my_prev_attr');

Cualquier consejo sería bienvenido.

    
pregunta Scott 08.03.2011 - 15:43

2 respuestas

3

Gracias al útil consejo de @ t31os, el problema se puede solucionar con el siguiente código:

/***************************************************************
* Function qtranslate_next_previous_fix
* Ensure that the URL for next_posts_link & previous_posts_link work with qTranslate
***************************************************************/

add_filter('get_pagenum_link', 'qtranslate_next_previous_fix');

function qtranslate_next_previous_fix($url) {
    return qtrans_convertURL($url);
}

Esta corrección también funciona para tipos de correos personalizados.

Actualizado

Esta segunda función garantiza que el next_post_link & Las etiquetas de la plantilla previous_post_link también se filtran correctamente en los tipos de publicaciones personalizadas.

/***************************************************************
* Function qtranslate_single_next_previous_fix
* Ensure that the URL for next_post_link & previous_post_link work with qTranslate
***************************************************************/

add_filter('next_post_link', 'qtranslate_single_next_previous_fix');
add_filter('previous_post_link', 'qtranslate_single_next_previous_fix');

function qtranslate_single_next_previous_fix($url) {
    $just_url = preg_match("/href=\"([^\"]*)\"/", $url, $matches);
    return str_replace($matches[1], qtrans_convertURL($matches[1]), $url);
}
    
respondido por el Scott 08.03.2011 - 16:03
4

Ejecuta un filtro en get_pagenum_link y deberías poder hacer lo que quieras.

Las funciones next_posts_link / previous_posts_link funcionan en cada una de las funciones de llamada que, a su vez, llaman a otras funciones, que finalmente vuelven a la función get_pagenum_link que proporciona un filtro con el mismo nombre.

Debería darte el control que necesitas, aunque publica un comentario si específicamente necesitas un ejemplo.

Para las funciones singulares de enlace de publicación, es decir. next_post_link / previous_post_link (note los otros lectores que no son plurales) hay un gancho de filtro con un nombre coincidente, por ejemplo. next_post_link y previous_post_link ..

    
respondido por el t31os 08.03.2011 - 15:52

Lea otras preguntas en las etiquetas