Ошибка: Попытка получить свойство non-object в options.php
При тестировании моей темы в режиме wp_debug я получаю следующее уведомление в options.php.
Я вижу, где проблема, но не знаю, как её исправить.
Похоже, что non-object вызывается из массива таксономий в options.php, так как массив не может найти term_id, потому что пост и/или категория не были созданы в пользовательском типе записи. Когда я создаю пост и назначаю ему категорию, уведомление исчезает.
// Загрузить все пользовательские таксономии в массив
$options_password_taxonomies = array();
$taxonomies_password_terms_obj = get_terms('password_gallery_category');
foreach ( $taxonomies_password_terms_obj as $taxonomy) {
$options_password_taxonomies[$taxonomy->term_id] = $taxonomy->name;
}
// Выбрать категорию для клиентской области
$options[] = array(
'name' => __('Password Protected Galleries', 'shutter'),
'desc' => __('Choose a category for password protected client galleries.', 'shutter'),
'id' => 'client_area',
'type' => 'select',
'options' => $options_password_taxonomies);

Вы можете использовать isset() или property_exists() для проверки существования свойства.
foreach ( $taxonomies_password_terms_obj as $taxonomy) {
if( isset( $taxonomy->term_id ) ){
$options_password_taxonomies[$taxonomy->term_id] = $taxonomy->name;
}
}

Спасибо. Это исправляет проблему, но создает новое уведомление.
Стоит ли мне задать это как новый вопрос?
Notice: Undefined index: homepage_feature in /inc/options-framework.php on line 313

Да, вам следует создать новый вопрос. Но сначала перейдите к этой строке и используйте еще одну проверку isset()
перед использованием этой переменной массива. Это должно исправить проблему.

Спасибо. Я вижу, что в options-framework.php уже есть isset() - но это не помогает.
if ( ! isset( $option['id'] ) ) {
continue; }

ок, я добавил новую проверку isset() для term_id, и это, кажется, устранило ошибки. спасибо, что познакомили меня с магией isset() :)
