Объект класса WP_Error не может быть преобразован в строку

После удаления некоторых категорий (это не должно было быть сделано), я получаю следующую ошибку

Обрезаемая фатальная ошибка: объект класса WP_Error не может быть преобразован в строку в [FILENAME] в строке 45

Вот файл, который вызвал ошибку. Вот выдержка (строка 45 – $output .= '<a href="' . $link . '">' . $term->name. '</a>, '; )

  ... foreach($item['value'] as $value) { $term = get_term($value, $fieldSettings['taxonomy']); $link = get_term_link($term); // no option may inerrupt ! if(!$term) { continue; } if(isset($formatterSettings['link_bool']) && $formatterSettings['link_bool']) { $output .= '<a href="' . $link . '">' . $term->name. '</a>, '; } else { $output .= $term->name . ', '; } } } ... ,  ... foreach($item['value'] as $value) { $term = get_term($value, $fieldSettings['taxonomy']); $link = get_term_link($term); // no option may inerrupt ! if(!$term) { continue; } if(isset($formatterSettings['link_bool']) && $formatterSettings['link_bool']) { $output .= '<a href="' . $link . '">' . $term->name. '</a>, '; } else { $output .= $term->name . ', '; } } } ... 

Как я могу исправить эту проблему? Я воссоздал все удаленные категории (я скопировал их имена и пули), но ошибка все еще остается.

Спасибо за помощь!

Вот полный файл

 namespace Hydra\Formatters; use Hydra\Builder; class TaxonomyFormatter extends BasicFormatter { public function __construct() { $this->name = 'taxonomy'; } public function render(\HydraFieldViewRecord $viewView, $post) { $items = $this->getValues($viewView); if(!$items) { return $items; } $fieldSettings = $viewView->field->attributes; $formatterSettings = $viewView->settings; $meta = $viewView->field->meta; $output = ''; foreach ($items as $item) { if(is_string($item['value'])) { if($item['value'] == 0) { continue; } $item['value'] = array($item['value']); } foreach($item['value'] as $value) { $term = get_term($value, $fieldSettings['taxonomy']); $link = get_term_link($term); // no option may inerrupt ! if(!$term) { continue; } if(isset($formatterSettings['link_bool']) && $formatterSettings['link_bool']) { $output .= '<a href="' . $link . '">' . $term->name. '</a>, '; } else { $output .= $term->name . ', '; } } } $output = trim($output, ', '); $terms = $output; $output = ''; $output .= '<div ' . $this->printAttributes($viewView) . '>'; if ($meta->prefix) { $output .= "<div class=\"field-prefix\" >" . $meta->prefix . "</div>"; } $output .= "<div class=field-value>" . $terms . "</div>"; if ($meta->suffix) { $output .= "<div class=\"field-suffix\">" . $meta->suffix . "</div>"; } $output .= "</div>"; return $output; } public function getSettingsForm($parentElement) { parent::getSettingsForm($parentElement); $parentElement->addField('checkbox', array('link_bool', __('Link to taxonomy page', 'hydraforms'))) ->setDefaultValue(false); } } , namespace Hydra\Formatters; use Hydra\Builder; class TaxonomyFormatter extends BasicFormatter { public function __construct() { $this->name = 'taxonomy'; } public function render(\HydraFieldViewRecord $viewView, $post) { $items = $this->getValues($viewView); if(!$items) { return $items; } $fieldSettings = $viewView->field->attributes; $formatterSettings = $viewView->settings; $meta = $viewView->field->meta; $output = ''; foreach ($items as $item) { if(is_string($item['value'])) { if($item['value'] == 0) { continue; } $item['value'] = array($item['value']); } foreach($item['value'] as $value) { $term = get_term($value, $fieldSettings['taxonomy']); $link = get_term_link($term); // no option may inerrupt ! if(!$term) { continue; } if(isset($formatterSettings['link_bool']) && $formatterSettings['link_bool']) { $output .= '<a href="' . $link . '">' . $term->name. '</a>, '; } else { $output .= $term->name . ', '; } } } $output = trim($output, ', '); $terms = $output; $output = ''; $output .= '<div ' . $this->printAttributes($viewView) . '>'; if ($meta->prefix) { $output .= "<div class=\"field-prefix\" >" . $meta->prefix . "</div>"; } $output .= "<div class=field-value>" . $terms . "</div>"; if ($meta->suffix) { $output .= "<div class=\"field-suffix\">" . $meta->suffix . "</div>"; } $output .= "</div>"; return $output; } public function getSettingsForm($parentElement) { parent::getSettingsForm($parentElement); $parentElement->addField('checkbox', array('link_bool', __('Link to taxonomy page', 'hydraforms'))) ->setDefaultValue(false); } } 

Solutions Collecting From Web of "Объект класса WP_Error не может быть преобразован в строку"

get_term может возвращать объект WP_Error в дополнение к ложному значению для не найденного термина или фактической строки термина.

Вы исправите это, добавив дополнительную проверку:

 if (!$term) { continue; } 

становится:

 if (!$term || is_wp_error($term)) { continue; } 

Вы также должны сделать это выше вызова get_term_link .

 $term = get_term($value, $fieldSettings['taxonomy']); if (!$term || is_wp_error($term)) { continue; } $link = get_term_link($term); 

get_term обычно возвращает WP_Error если таксономия не существует или не зарегистрирована (вы можете посмотреть источник для получения дополнительной информации). Настолько уверен, что это так. Если вы зарегистрируете его, убедитесь, что вышеуказанный код (вызывающий ошибку) происходит через некоторое время после init , где таксономия, вероятно, зарегистрирована.