Intereting Posts
Landing Page – Redirect Loop? Как установить случайный стиль css? Ограничьте пользователя условиями в пользовательской таксономии, зарегистрированной как для должностей, так и для пользователей Отображать метабокс, если отмечен флажок Отправлять уведомление администратору при отправке новой персонализированной почты Изменить порядок полей полей пользовательского типа на странице администрирования Регистрация методов класса как обратных вызовов Получить список категорий с именем категории в пользовательском классе WP_List_Table Внешний скрипт с использованием WP – Hooks / Actions не работает? Как включить таблицу стилей в пользовательский админ с помощью parent_slug Искать все (сообщения, страницы, теги, cpt, meta) Как перевести контент в category.php или index.php с помощью qtranslate? Как установить иерархический уровень таксономии на 2? Уникальный PHP на каждой странице Категории и теги, возвращающие 404 на боковой панели при использовании уродливых постоянных ссылок

Объект класса 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 , где таксономия, вероятно, зарегистрирована.