Avertizare: Argument invalid furnizat pentru foreach() în portfolio-list.php

21 iun. 2017, 05:02:21
Vizualizări: 14.9K
Voturi: 1

Am o problemă cu tema mea WordPress.

Primesc următoarea eroare după ce încarc o imagine reprezentativă în elementele portofoliului:

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

Acesta este codul care provoacă eroarea, găsit în portfolio-list.php:

// Obține termenii (categoriile) pentru elementul portofoliu
$terms = get_the_terms( $post_item->ID, 'portfolio_categories' );

foreach( $terms as $term ) {
// unele instrucțiuni aici
}

Poate cineva să mă ajute să înțeleg de ce se întâmplă acest lucru și cum pot remedia această eroare?

1
Comentarii

Această problemă necesită cunoașterea modului în care tema a fost construită. Prin urmare, este mai bine să întrebați autorul acesteia decât un site generalist precum WPSE.

cjbj cjbj
21 iun. 2017 10:52:47
Toate răspunsurile la întrebare 3
1

Acest lucru se întâmplă atunci când funcția foreach() primește o intrare nevalidă, deoarece nu există niciun termen returnat. Pentru a preveni această eroare, înfășurați bucla în interiorul unei condiții:

// Obține termenii (categoriile) pentru elementul portofoliu
$terms = get_the_terms( $post_item->ID, 'portfolio_categories' );
if(is_array($terms) || is_object($terms)){
    foreach( $terms as $term ) {
    // codul aici
    }
}

Acum, bucla va rula doar dacă postarea are termeni asociați.

21 iun. 2017 11:47:47
Comentarii

Două observații suplimentare: 1. Te rog să creezi un child theme dacă faci asta. 2. Ca o soluție rapidă pentru această problemă (pe care ar trebui să o raportezi autorului temei pentru a o remedia), asigură-te că fiecare articol are cel puțin o categorie atribuită.

kraftner kraftner
22 iun. 2017 13:50:22
0

Eroarea se află în tema ta. Contactează echipa de suport a temei. Acesta este locul potrivit pentru a adresa întrebări legate de temă.

(Totuși, eroarea arată ca și cum funcția get_the_terms() nu returnează un array, așa că foreach nu va funcționa.)

Aceasta trebuie remediată de autorul temei.

21 iun. 2017 06:37:04
0

Va fi puțin dificil de prezis, dar iată câteva opțiuni pe care le puteți încerca:

  1. Încercați să afișați ID-ul postării pentru a verifica dacă este populat corect.
  2. Verificați dacă "portfolio_categories" este numele exact al taxonomiei dumneavoastră. Puteți trece cu mouse-ul peste link în panoul de administrare și căutați "taxonomy=[numele_taxonomiei]" în URL.

Verificați aceste aspecte și vedeți ce puteți descoperi.

21 iun. 2017 12:26:58