Intereting Posts
Как настроить плагин, поддерживая возможность обновления Добавить WordPress Core CSS в editor-style.css Помощь по сокращению короткого кода IF Физическая организация медиафайла WordPress (плагин Real Media Library) Запуск цикла с пользовательской строкой запроса на настраиваемом шаблоне страницы Woocommerce POS-плагин (работает как кассовый аппарат с различными запасами / запасами) Как перенаправить не администраторов на домашнюю страницу, если пытаетесь просмотреть mysite.com/wp-admin/? Как изменить файлы внутри каталога wp-includes в wordpress Показать изображение слева и содержимое справа, используя ul li Включить текст в эхо-гиперссылку Получите все пользовательские сообщения с определенной таксономией Загружаются два сообщения вместо одного? add_image_size не работает с the_post_thumbnail Получать multisite счет без php? Как остановить сброс статуса публикации на публикацию

Непрямая модификация перегруженного свойства WP_Post :: $ ancestors не влияет

После обновления моего WordPress до последней версии, я получаю сообщение об ошибке ниже:

Непрямая модификация перегруженного свойства WP_Post :: $ ancestors не влияет

<ul id="mainwalker"> <?php if(!$post->post_parent){ $children = wp_list_pages(array( 'sort_column' => 'menu_order', 'title_li' => '', 'echo' => 1, 'walker' => new Sidebar_Custom_Walker() )); }else{ if($post->ancestors) { $ancestors = end($post->ancestors); $children = wp_list_pages(array( 'sort_column' => 'menu_order', 'title_li' => '', 'echo' => 1, 'child_of'=>$ancestors, 'walker' => new Sidebar_Custom_Walker() )); } } if ($children) { ?> <?php echo $children; ?> <?php } ?> </ul> 

Как я понимаю, свойство WP_Post::$ancestors создается динамически. Итак, если вы попытаетесь получить к нему доступ, когда он не существует, PHP называет магический метод __get на этом объекте и пытается получить значение этого свойства.

Поскольку свойство создается динамически, вы не можете его изменять, как в этой строке end() функция end() изменяет внутреннюю позицию указателя массива):

 end($post->ancestors); 

Это сообщение из PHP можно избежать, если метод __get возвращается по ссылке, но вы не можете изменить основной код (и я не уверен, что возврат по ссылке в WP_Post :: __ get все равно будет одобрен), поэтому вам следует попробовать изменить ваша собственная переменная с предками предков:

  if(!$post->post_parent){ $children = wp_list_pages(array( 'sort_column' => 'menu_order', 'title_li' => '', 'echo' => 1, 'walker' => new Sidebar_Custom_Walker() )); }else{ $ancestors = $post->ancestors; // Using get_post_ancestors() should work as well // $ancestors = get_post_ancestors(); if( !empty( $ancestors ) ) { $ancestors = end($ancestors); $children = wp_list_pages(array( 'sort_column' => 'menu_order', 'title_li' => '', 'echo' => 1, 'child_of'=>$ancestors, 'walker' => new Sidebar_Custom_Walker() )); } }