Title: $lookup &#8211; Fehler beu PHP-Versionswechsel
Last modified: 18. Februar 2024

---

# $lookup – Fehler beu PHP-Versionswechsel

 *  Gelöst [Lynnv](https://de.wordpress.org/support/users/lynnv/)
 * (@lynnv)
 * [vor 2 Jahren, 7 Monaten](https://de.wordpress.org/support/topic/lookup-fehler-beu-php-versionswechsel/)
 * Hallo@all,
 * weiß zufällig jemand, ob der lookup-Befehl in der neuen PHP-Version nicht mehr
   funktioniert ?
 * Also bin dabei, die PHP-Version 7.4 in 8.3 zu ändern, dabei stürzt die Seite 
   ab. Die Fehlermeldung sagt dann aus, dass Children nicht NULL sein darf.
 * Wenn ich den unteren Code auskommentiere, funktioniert die Seite, allerdings 
   funktioniert dann das Menü nicht mehr.
 * LG sendet
 * Lynn
 *     ```wp-block-code
       // Build hirarchy (page has children)
   
       foreach ($pages as $page) {
   
       $lookup[$page->ID]->parent = $lookup[intval($page->menu_item_parent)];
       $lookup[intval($page->menu_item_parent)]->children[] = $lookup[$page->ID];
   
       }
       ```
   

Ansicht von 7 Antworten – 1 bis 7 (von insgesamt 7)

 *  Moderator [Hans-Gerd Gerhards](https://de.wordpress.org/support/users/hage/)
 * (@hage)
 * [vor 2 Jahren, 7 Monaten](https://de.wordpress.org/support/topic/lookup-fehler-beu-php-versionswechsel/#post-156066)
 * Hallo,
    hilfreich könnte dabei die Aktivierung des Debug-Modus sein. Damit Fehler
   ausgelesen werden können, müssen die Fehler in eine Log-Datei auf dem Server 
   geschrieben werden, auf die man dann per FTP (oder auch SSH) zugreifen kann. 
   Sichere bitte zunächst die `wp-config.php` auf deinem lokalen Rechner. Gib dann
   bitte mit einem geeigneten Programmier-Editor (z. B. [Notepad++](https://notepad-plus-plus.org/downloads/))
   in der `wp-config.php` oberhalb von `/* That's all, stop editing! Happy blogging.*/`
   folgendes ein:
 *     ```
       define( 'WP_DEBUG', true );
       define( 'WP_DEBUG_DISPLAY', false);
       define( 'WP_DEBUG_LOG', true );
       ```
   
 * Achte darauf, dass du `define('WP_DEBUG', false);` überschreibst, falls die Zeile
   bereits in der wp-config.php steht. Wenn versucht wird, diese Konstante ein zweites
   mal zu definieren, gibt es einen Fehler, der deine Seite lahmlegen würde.
    Mit
   diesen drei Codezeilen sagen wir WordPress, dass der Debug-Modus aktiviert werden
   soll. Die Fehlermeldungen sollen aber nicht direkt angezeigt werden, sondern 
   in die Datei `/wp-content/debug.log` geschrieben werden. Wenn der Fehler gefunden
   wurde bzw. wenn die Fehler nicht mehr in die debug.log geschrieben werden sollen,
   dann musst du daran denken, die Variable `define( 'WP_DEBUG_LOG', true );` wieder
   auf false zu setzen: `define( 'WP_DEBUG_LOG', false);`
 * Evtl. auch mal PHP zunächst auf 8.1.x oder 8.2.x umstellen.
    Ggfs. auch Info 
   an die Entwickler des Themes und/oder Plugins.
 * Viele Grüße
    Hans-Gerd
 *  Themenersteller [Lynnv](https://de.wordpress.org/support/users/lynnv/)
 * (@lynnv)
 * [vor 2 Jahren, 7 Monaten](https://de.wordpress.org/support/topic/lookup-fehler-beu-php-versionswechsel/#post-156067)
 * Hallo Gerd,
 * schnell wie immer 😉
 * Auch mit PHP 8.0 wird die Seite abgebrochen!
 * Fatal error Uncaught Error: Attempt to modify property &quot;children&quot; on
   null in /homepages/7/d292804320/htdocs/WordPress/wp-content/themes/briegerthochgeschurtz/
   functions.php:169Stack trace:
   #0 /homepages/7/d292804320/htdocs/WordPress/wp-
   content/themes/briegerthochgeschurtz/modules/navigation.php(1): BH_Page::getTree()#
   1 /homepages/7/d292804320/htdocs/WordPress/wp-includes/template.php(792): require(‚/
   homepages/7/d2…‘)#2 /homepages/7/d292804320/htdocs/WordPress/wp-includes/template.
   php(725): load_template()#3 /homepages/7/d292804320/htdocs/WordPress/wp-includes/
   general-template.php(206): locate_template()#4 /homepages/7/d292804320/htdocs/
   WordPress/wp-content/themes/briegerthochgeschurtz/index.php(15): get_template_part()#
   5 /homepages/7/d292804320/htdocs/WordPress/wp-includes/template-loader.php(106):
   include(‚/homepages/7/d2…‘)#6 /homepages/7/d292804320/htdocs/WordPress/wp-blog-
   header.php(19): require_once(‚/homepages/7/d2…‘)#7 /homepages/7/d292804320/htdocs/
   WordPress/index.php(17): require(‚/homepages/7/d2…‘)#8 {main} thrown
 * LG sendet
 * Lynn
 *  Moderator [Bego Mario Garde](https://de.wordpress.org/support/users/pixolin/)
 * (@pixolin)
 * Moderator (nicht mehr aktiv)
 * [vor 2 Jahren, 7 Monaten](https://de.wordpress.org/support/topic/lookup-fehler-beu-php-versionswechsel/#post-156069)
 * `$lookup` ist überhaupt keine Funktion, sondern eine Variable, wobei der Entwickler
   einen wenig aussagefähigen Begriff verwendet hat. Nur anhand der zwei Zeilen 
   Code lässt sich schwer zuordnen, was da eigentlich genau passieren soll. Die 
   Fehlermeldung besagt aber, dass einem PHP-Objekt ein Wert zugewiesen werden soll,
   was nicht funktioniert. Der Programmierer hat auch keine Abfrage eingebaut, die
   erst einmal prüft, ob das Objekt überhaupt vorhanden ist. Während ältere PHP-
   Versionen solche Fehler einfach toleriert haben, wird bei PHP8 mit einer Fehlermeldung
   abgebrochen.
   Da das Theme nicht öffentlich zugänglich ist, können wir nicht viel
   mehr zu der Fehlermeldung sagen. Wende dich bitte an den Entwickler.
 *  Themenersteller [Lynnv](https://de.wordpress.org/support/users/lynnv/)
 * (@lynnv)
 * [vor 2 Jahren, 7 Monaten](https://de.wordpress.org/support/topic/lookup-fehler-beu-php-versionswechsel/#post-156071)
 * Hallo Bego Mario Garde,
 * vielen Dank für Deine Ausführung zu PHP 8, dass dort anders gehändelt wird.
   Der
   Autor ist anscheinend nicht mehr greifbar 🙁Hier der gesamte Code, in 169 ist
   die Stelle, wo abgebrochen wird.
 *     ```wp-block-code
       <?php
   
       // Theme setup
       add_action( 'after_setup_theme', 'bh_setup' );
   
       function bh_setup() {
   
       	// hide admin bar
       	add_filter( 'show_admin_bar', '__return_false' );
   
       	// remove some default header stuff (@see: wp-includes/default-filters.php)
       	remove_action( 'wp_head', 'feed_links',                      2     );
       	remove_action( 'wp_head', 'feed_links_extra',                3     );
       	remove_action( 'wp_head', 'rsd_link'                               );
       	remove_action( 'wp_head', 'wlwmanifest_link'                       );
       	remove_action( 'wp_head', 'wp_generator'                           );
       	remove_action( 'wp_head', 'rel_canonical'                          );
           remove_action( 'wp_head', 'rsd_link');
           remove_action( 'wp_head', 'index_rel_link');
           remove_action( 'wp_head', 'parent_post_rel_link', 10, 0);
           remove_action( 'wp_head', 'start_post_rel_link', 10, 0);
           remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0);
           remove_action( 'wp_head', 'wp_shortlink_header', 10, 0);
           remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
   
       	// remove emoji stuff
       	remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
       	remove_action( 'wp_print_styles', 'print_emoji_styles' );
   
       	// Post thumbnails
       	add_theme_support( 'post-thumbnails' );
   
       	// Add nav menu
       	register_nav_menu( 'primary', __( 'Primary Menu', 'briegerthochgeschurtz' ) );
       	register_nav_menu( 'secondary', __( 'Secondary Menu', 'briegerthochgeschurtz' ) );
   
       	// Make the theme translation ready
       	load_theme_textdomain( 'briegerthochgeschurtz', get_template_directory() . '/languages' );
   
           // register styles
           wp_enqueue_style( 'bh', get_template_directory_uri() . '/css/all.css' );
           // remove theme css from wp-admin
           add_action( 'admin_init', 'remove_local_css' );
   
       	// Register and enqueue Javascript files
       	// wp_enqueue_script( 'bh_jquery', get_template_directory_uri().'/javascript/jquery-3.1.1.min.js', array(), '', true );
           wp_enqueue_script( 'bh_custom', get_template_directory_uri().'/javascript/custom.js', array('jquery'), '', true );
   
           // remove xmlrpc
           add_filter( 'xmlrpc_enabled', '__return_false' );
           add_filter( 'wp_headers', 'bh_remove_x_pingback' );
   
           // enable woocommerce support
           add_theme_support( 'woocommerce' );
       }
   
       // remove xmlrpc
       function bh_remove_x_pingback( $headers ) {
          unset( $headers['X-Pingback'] );
          return $headers;
       }
   
       // remove css from wp-admin
       function remove_local_css() {
       	wp_deregister_style( 'bh' );
       }
   
       function bh_sidebar() {
       	register_sidebar( array(
       		'name' => __( 'Sidebar', 'briegerthochgeschurtz' ),
       		'id' => 'sidebar',
       		'description' => '',
       		'before_widget' => '<div class="sidebar-widget">',
       		'after_widget' => '</div>',
       		'before_title' => '<h2>',
       		'after_title' => '</h2>'
       		) 
       	);
       }
       add_action( 'widgets_init', 'bh_sidebar' );
   
       // add Events-Option Page
       if( function_exists('acf_add_options_page') ) {
         acf_add_options_page(array(
               'page_title'    => 'Events',
               'menu_title'    => 'Events',
               'menu_slug'     => 'events',
           ));
       }
       // add Events-Select for pages
       function acf_load_event_field_choices( $field ) {
           // reset choices
           $field['choices'] = array();
           // get events
           $choices = get_field('events', 'option');
           // loop through array and add to field 'choices'
           if( is_array($choices) ) { 
               $field['choices'][] = "";
               foreach( $choices as $choice ) {
                   $field['choices'][ $choice['veranstaltung'] ] = $choice['veranstaltung'];
               }
           }
           return $field;
       }
       add_filter( 'acf/load_field/name=eventlink', 'acf_load_event_field_choices' );
   
       // Navigation stuff
       error_reporting(E_ERROR | E_PARSE);
       class BH_Page {
   
           protected $data = array();
           public $parent = null;
           public $children = array();
           public function __construct(array $data) {
               $this->data = array(
                   'ID' => $data['ID'],
                   'title' => $data['title'],
                   'url' => $data['url'],
                   'current' => $data['current'],
                   'hidden' => (in_array('hidden', (array) $data['classes'])),
                   'target' => ($data['target']) ? ' target="' . $data['target'] . '"' : '',
               );
           }
   
           public function __get($key) {
               return $this->data[$key];
           }
   
           public function __set($key, $value) {
               $this->data[$key] = $value;
           }
   
           public static function getTree($name) {
               $locations = get_nav_menu_locations();
   
               if (array_key_exists($name, $locations) === false) {
                   return;
               }
   
               $pages = wp_get_nav_menu_items($locations[$name]);
   
               _wp_menu_item_classes_by_context($pages); /* Adds [current] => 1 property */
   
               /**
                * Tree
                *
                * i.e. $treeRoot->children[2]->children[1]->title
                */
               // Create tree root (imaginary node)
               $treeRoot = new BH_Page(array(
                   'ID' => 0,
                   'title' => '__TREE_ROOT__',
                   'url' => '',
                   'current' => false
               ));
   
               // Build lookup table
               $lookup = array(
                   0 => $treeRoot
               );
   
               foreach ($pages as $page) {
                   $lookup[$page->ID] = new BH_Page($page->to_array());
               }
   
               // Build hirarchy (page has children)
              foreach ($pages as $page) {
                   $lookup[$page->ID]->parent = $lookup[intval($page->menu_item_parent)];
                   $lookup[intval($page->menu_item_parent)]->children[] = $lookup[$page->ID];
               }
   
               // Mark rootline as active
               $active = $treeRoot->findActive();
               if ($active !== null) {
                   $active->setRootlineActive();
               }
   
               // Return tree root
               return $treeRoot;
           }
   
           public function setRootlineActive() {
               if ($this->parent === null) {
                   return;
               }
   
               $this->parent->current = true;
               $this->parent->setRootlineActive();
           }
   
           public function findActive() {
               foreach ($this->children as $child) {
                   if ($child->current) {
                       return $child;
                   }
   
                   $return = $child->findActive();
   
                   if ($return !== null) {
                       return $return;
                   }
               }
   
               return null;
           }
   
   
           public function hasVisibleChildren() {
               foreach ($this->children as $child) {
                   if ($child->hidden === false) {
                       return true;
                   }
               }
   
               return false;
           }
   
       }
   
   
       ?>
       ```
   
 *  Moderator [Bego Mario Garde](https://de.wordpress.org/support/users/pixolin/)
 * (@pixolin)
 * Moderator (nicht mehr aktiv)
 * [vor 2 Jahren, 7 Monaten](https://de.wordpress.org/support/topic/lookup-fehler-beu-php-versionswechsel/#post-156072)
 * > Der Autor ist anscheinend nicht mehr greifbar
 * Schade. Dann solltest du dir einen Dienstleister suchen, der den Code analysiert
   und korrigiert. Für Anwendungssupport sprengt das den zeitlichen Rahmen (zumindest
   für mich – vielleicht hat da jemand anders mehr Zeit). – Der Fehler betrifft 
   weder WordPress selbst, noch eines der im WordPress-Verzeichnis frei erhältlichen
   Themes und Plugins, sondern den Code eines benutzereigenen Themes, das wir hier
   nicht programmiert haben und für das wir auch keinen Support anbieten.
 *  Themenersteller [Lynnv](https://de.wordpress.org/support/users/lynnv/)
 * (@lynnv)
 * [vor 2 Jahren, 7 Monaten](https://de.wordpress.org/support/topic/lookup-fehler-beu-php-versionswechsel/#post-156073)
 * Ich danke Dir trotzdem 😉
 * Einen schönen Sonntagabend
 * Lynn
 *  Themenersteller [Lynnv](https://de.wordpress.org/support/users/lynnv/)
 * (@lynnv)
 * [vor 2 Jahren, 7 Monaten](https://de.wordpress.org/support/topic/lookup-fehler-beu-php-versionswechsel/#post-156081)
 * Die Lösung dank dem Hinweis von Bego Mario Garde:
 *     ```wp-block-code
       // Build hirarchy (page has children)
          foreach ($pages as $page) {
             $lookup[$page->ID]->parent = $lookup[intval($page->menu_item_parent)];
          if (is_null($lookup[$page->ID]->parent));
             else{   
                 $lookup[intval($page->menu_item_parent)]->children[] = $lookup[$page->ID];
                 }
           }
       ```
   

Ansicht von 7 Antworten – 1 bis 7 (von insgesamt 7)

 Das Thema „$lookup – Fehler beu PHP-Versionswechsel“ ist für neue Antworten geschlossen.

 * In: [Themes](https://de.wordpress.org/support/forum/themes/)
 * 7 Antworten
 * 3 Teilnehmer
 * Letzte Antwort von: [Lynnv](https://de.wordpress.org/support/users/lynnv/)
 * Letzte Aktivität: [vor 2 Jahren, 7 Monaten](https://de.wordpress.org/support/topic/lookup-fehler-beu-php-versionswechsel/#post-156081)
 * Status: gelöst

## Themen

### Beliebteste Themen

### Unbeantwortete Themen

### Nicht-Support-Themen

### Gelöste Themen

### Ungelöste Themen

### Alle Themen
