web-dev-qa-db-fra.com

Avertissement: argument non valide fourni pour foreach () dans portfolio-list.php

J'ai des problèmes avec mon thème WordPress.

Je reçois le message d'erreur ci-dessous après avoir téléchargé une image dans le ou les éléments de mon portefeuille:

Avertissement: argument non valide fourni pour foreach () dans /home2/maryhtran/public_html/wp-content/themes/Motive/portfolio-list.php à la ligne 150.

C'est le code qui cause l'erreur trouvée dans portfolio-list.php:

// Get the terms( categories ) for the portfolio item
$terms = get_the_terms( $post_item->ID, 'portfolio_categories' );

foreach( $terms as $term ) {
// some code here
}

Est-ce que quelqu'un pourrait m'aider à comprendre pourquoi cela se produit et comment je peux corriger cette erreur?

1
Mary

Cela se produit lorsque la fonction foreach() est alimentée avec une entrée non valide, car aucun terme n'est renvoyé. Pour éviter cela, placez votre boucle dans une condition:

// Get the terms( categories ) for the portfolio item
$terms = get_the_terms( $post_item->ID, 'portfolio_categories' );
if(is_array($terms) || is_object($terms)){
    foreach( $terms as $term ) {
    // some code here
    }
}

Maintenant, la boucle ne fonctionnera que si la publication a quelques termes.

1
Jack Johansson

L'erreur est dans votre thème. Contactez le support technique. C’est le bon endroit pour poser des questions sur des thèmes.

(Mais l'erreur semble indiquer que la fonction get_the_terms() ne renvoie pas de tableau. La variable foreach ne fonctionnera donc pas.)

Cela doit être corrigé par l'auteur du thème.

0
Rick Hellewell

Ce sera un peu difficile à prédire, mais voici quelques options que vous pouvez essayer:

  1. Essayez de faire écho à l'identifiant de post pour voir qu'il est en train de peupler.
  2. Vérifiez si "portfolio_categories" est le nom exact de votre taxonomie. Vous pouvez survoler le lien dans le panneau d'administration et rechercher "taxonomy = [nom_comme]" dans l'URL.

Vérifiez ces choses et voyez ce que vous pouvez trouver.

0
Sid