Предупреждение: Недопустимый аргумент для foreach() в portfolio-list.php

21 июн. 2017 г., 05:02:21
Просмотры: 14.9K
Голосов: 1

У меня возникла проблема с темой WordPress.

После загрузки изображения записи в портфолио появляется следующая ошибка:

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

Вот код, вызывающий ошибку, который находится в файле portfolio-list.php:

// Получаем термины (категории) для элемента портфолио
$terms = get_the_terms( $post_item->ID, 'portfolio_categories' );

foreach( $terms as $term ) {
// какой-то код здесь
}

Может кто-нибудь помочь понять, почему это происходит и как исправить эту ошибку?

1
Комментарии

Эта проблема требует понимания того, как была построена тема. Поэтому лучше обратиться к её автору, а не на общие сайты вроде WPSE.

cjbj cjbj
21 июн. 2017 г. 10:52:47
Все ответы на вопрос 3
1

Это происходит, когда в foreach() передается недопустимая запись из-за отсутствия возвращаемых терминов. Чтобы избежать этого, оберните цикл в условие:

// Получаем термины (категории) для элемента портфолио
$terms = get_the_terms( $post_item->ID, 'portfolio_categories' );
if(is_array($terms) || is_object($terms)){
    foreach( $terms as $term ) {
    // какой-то код здесь
    }
}

Теперь цикл будет выполняться только если у записи есть термины.

21 июн. 2017 г. 11:47:47
Комментарии

Два дополнительных замечания: 1. Пожалуйста, создайте дочернюю тему, если вы делаете это. 2. В качестве быстрого временного решения для этой ошибки (которую вы должны сообщить автору темы, чтобы он мог её исправить) убедитесь, что каждая запись имеет хотя бы одну назначенную категорию.

kraftner kraftner
22 июн. 2017 г. 13:50:22
0

Ошибка в вашей теме. Обратитесь в поддержку темы. Это правильное место для вопросов, связанных с темой.

(Но ошибка выглядит так, как будто функция get_the_terms() не возвращает массив, поэтому цикл foreach не будет работать.)

Это должно быть исправлено автором темы.

21 июн. 2017 г. 06:37:04
0

Будет немного сложно предсказать, но вот несколько вариантов, которые можно попробовать:

  1. Попробуйте вывести ID записи через echo, чтобы убедиться, что он действительно передается.
  2. Проверьте, точно ли "portfolio_categories" является правильным названием вашей таксономии. Вы можете навести курсор на ссылку в админ-панели и поискать "taxonomy=[какое-то_название]" в URL.

Проверьте эти моменты и посмотрите, что удастся найти.

21 июн. 2017 г. 12:26:58