web-dev-qa-db-fra.com

Avertissement: implode () [function.implode]: arguments non valides transmis

Je reçois l'erreur ci-dessous ...

Avertissement: implode () [function.implode]: arguments non valides passés dans\wp-content/themes/mytheme/functions.php sur la ligne 1335

à...

function my_get_tags_sitemap(){
    if ( !function_exists('wp_tag_cloud') || get_option('cb2_noposttags')) return;
    $unlinkTags = get_option('cb2_unlinkTags'); 
    echo '<div class="tags"><h2>Tags</h2>';
    if($unlinkTags)
    {
        $tags = get_tags();
        foreach ($tags as $tag){
            $ret[]= $tag->name;
        }
        //ERROR OCCURS HERE
        echo implode(', ', $ret);
    }
    else
    {
        wp_tag_cloud('separator=, &smallest=11&largest=11');
    }
    echo '</div>';
}

Toutes les idées pour intercepter l'erreur. Le site a exactement une balise.

19
Scott B

Vous obtenez l'erreur car $ret N'est pas un tableau.

Pour supprimer l'erreur, au début de votre fonction, définissez-la avec cette ligne: $ret = array();

Il semble que l'appel get_tags () ne renvoie rien, donc foreach n'est pas exécuté, ce qui signifie que $ ret n'est pas défini.

44
Mark Eirich

Tu peux essayer

echo implode(', ', (array)$ret);
35
蔡正海

Cela se produit lorsque $ret N'a pas été défini. La solution est simple. Juste au-dessus de $tags = get_tags();, ajoutez la ligne suivante:

$ret = array();
2
Andrew Moore