web-dev-qa-db-fra.com

Les titres de mon widget de barre latérale apparaissent dans toutes les langues - avec qtranslate

Alors voici mon code, en utilisant le plugin qTranslate:

    query_posts(array('post_type' => 'uk_blog', 'numberposts' => 2));
    $i = 0; while(have_posts()): the_post($post);?>
    <div class="third-column"<?php if ($i == 1) echo ' style="margin-right:0;"';?>>
        <h2><a href="<?php get_permalink($post->ID);?>"><?php the_title();?></a></h2>
        <div class="inner">
            <?php $length = strlen(get_the_content());
            echo nl2br(substr(strip_tags(get_the_content()), 0, 500));
            if ($length > 500){
                echo '...<br /><a href="' . get_permalink($post->ID) . '">Read more</a>';
            }
            ?>
        </div>
    </div>
    <?php $i++; endwhile;?>

Les titres de publication (utilisant the_title ();) apparaissent en fait dans toutes les langues en même temps, c’est-à-dire: titre anglais, titre français, titre espagnol.

L'affichage de la source HTML montre que les balises qTranslate qui définissent le bit d'une chaîne pour quelle langue sont directement sorties. IE la source HTML est

<!--:en-->English title<!--:--><!--:fr-->French title<!--:-->

Les publications proviennent d'un type de publication personnalisé.

Des idées pourquoi cela pourrait être?

Merci d'avoir lu!

4
Will

Salut je vais aussi essayer ceci:

Ajoutez ceci à votre functions.php

function get_qTrans_TitleText($text) {
  $language=qtrans_getLanguage();
  preg_match('/<!--:'.$language.'-->(.*?)<!--:-->/', $text, $matches);
  return strip_tags($matches[0]);
}

Et alors:

<?php echo get_qTrans_TitleText($text); ?>

Vous ne savez pas quelle version de qTranslate et WP vous avez afin que vous puissiez même utiliser __ () pour obtenir le titre correct ou _e () pour le faire écho.

3
Daniel Sachs

J'ai rencontré des problèmes de ce type avec qTranslate, et la première chose à faire est de vous assurer que vous utilisez bien the_title() ou le filtre the_title, comme suggéré par Daniel Sachs.

Puisque votre widget appelle déjà the_title(), ce n'est clairement pas le cas. À quelques reprises (notamment lors de la mise à jour de WordPress ou de qTranslate), j'ai dû modifier les publications pour qu'elles s'affichent correctement. Essayez de modifier la publication concernée, basculez entre les onglets et essayez de supprimer et de réinsérer les titres dans les champs respectifs. Bizarrement, cela a résolu de tels problèmes pour moi.

2
Simon

Essayez d'utiliser

<h2>
    <a href="<?php get_permalink($post->ID);?>">
        <?php echo apply_filters('the_title', $post->post_title); ?>
    </a>
</h2>
1
Daniel Sachs