Avviso: Argomento non valido fornito per foreach() in portfolio-list.php

21 giu 2017, 05:02:21
Visualizzazioni: 14.9K
Voti: 1

Sto avendo problemi con il mio tema WordPress.

Ricevo il seguente errore dopo aver caricato un'immagine in evidenza nei miei elementi del portfolio:

Warning: Invalid argument supplied for foreach() in /home2/maryhtran/public_html/wp-content/themes/Motive/portfolio-list.php on line 150

Questo è il codice che causa l'errore, presente in portfolio-list.php:

// Ottieni i termini (categorie) per l'elemento del portfolio
$terms = get_the_terms( $post_item->ID, 'portfolio_categories' );

foreach( $terms as $term ) {
// del codice qui
}

Qualcuno potrebbe aiutarmi a capire perché accade questo e come posso risolvere questo errore?

1
Commenti

Questo problema richiede la conoscenza di come il tema è stato costruito. Quindi, è meglio chiedere all'autore del tema piuttosto che a un sito generico come WPSE.

cjbj cjbj
21 giu 2017 10:52:47
Tutte le risposte alla domanda 3
1

Succede quando il foreach() riceve un input non valido, perché non viene restituito alcun termine. Per evitare questo problema, racchiudi il tuo loop all'interno di una condizione:

// Ottieni i termini (categorie) per l'elemento del portfolio
$terms = get_the_terms( $post_item->ID, 'portfolio_categories' );
if(is_array($terms) || is_object($terms)){
    foreach( $terms as $term ) {
    // del codice qui
    }
}

Ora, il loop verrà eseguito solo se il post ha dei termini associati.

21 giu 2017 11:47:47
Commenti

Due note aggiuntive: 1. Per favore crea un child theme se lo fai. 2. Come soluzione temporanea per questo bug (che dovresti segnalare all'autore del tema così che possa risolverlo) assicurati che ogni articolo abbia almeno una categoria assegnata.

kraftner kraftner
22 giu 2017 13:50:22
0

L'errore è nel tuo tema. Contatta il supporto del tema. Quello è il posto giusto per fare domande relative al tema.

(Ma l'errore sembra che la funzione get_the_terms() non stia restituendo un array, quindi il foreach non funzionerà.)

Questo deve essere risolto dall'autore del tema.

21 giu 2017 06:37:04
0

Sarà un po' difficile da prevedere, ma ecco alcune opzioni che potresti provare:

  1. Prova a visualizzare l'ID del post con echo per verificare se viene effettivamente popolato.
  2. Controlla se "portfolio_categories" è esattamente il nome della tua tassonomia. Puoi passare il mouse sul link nel pannello di amministrazione e cercare "taxonomy=[nome_della_tassonomia]" nell'URL.

Verifica questi aspetti e vedi cosa riesci a scoprire.

21 giu 2017 12:26:58