0

After switching from PHP 7.4.30 to PHP 8.1, my WordPress website, which was built by the original developer using React JS, started acting strangely. The menus stopped working and the home page became frozen and immovable.

Enable the debug and below are some of them.

Deprecated: Optional parameter $menu declared before required parameter $location is implicitly treated as a required parameter in \app\public\wp-content\themes**\functions\classes\Settings\Menu.php on line 22 **

   <?php

  namespace ThemeClasses\Settings;

  class Menu
  {
    public function __construct()
    {
      add_action('after_setup_theme', [$this, 'registerNavMenus']);
      add_filter('getMenuTree', [$this, 'getMenuTree'], 10, 2);
    }

    public function registerNavMenus()
    {
      register_nav_menus([
        'header_menu' => __('Header Menu', 'siri'),
        'footer_menu' => __('Footer Menu', 'siri'),
        'footer_columns' => __('Footer Columns', 'siri'),
      ]);
    }

    public function getMenuTree($menu = [], $location)
    {
      $flatMenu = $menu;
      $flatMenu = $this->getMenuItems($menu, $location);

      $treeMenu = [];
      $itemsRefs = [];

      foreach ($flatMenu as $menuItemObj) {
        $itemId = $menuItemObj->ID;
        $parentId = $menuItemObj->menu_item_parent;

        $itemsRefs[$itemId] = [
          'name' => $menuItemObj->title,
          'url' => $menuItemObj->url,
          'target' => $menuItemObj->target,
          'active' => $menuItemObj->active,
          'ID' => $itemId,
          'parentId' => $parentId,
          'children' => [],
        ];;

        if ($parentId == 0) {
          $treeMenu[] = &$itemsRefs[$itemId];
        } elseif (isset($itemsRefs[$parentId])) {
          $itemsRefs[$parentId]['children'][] = &$itemsRefs[$itemId];
        }
      }

      return $treeMenu;
    }

    private function getMenuItems($menu, $location)
    {
      // Get all locations
      $locations = get_nav_menu_locations();

      // Get object id by location
      $menuObject = wp_get_nav_menu_object($locations[$location]);

      // Check menu exists
      if (!is_object($menuObject)) return [];

      // Get menu items by menu slug
      $menu = wp_get_nav_menu_items($menuObject->slug);

      // Return menu post objects
      return $menu;
    }
  }

**Deprecated: parse_str(): Passing null to parameter #1 ($string) of type string is deprecated in public\wp-content\themes**r\functions\classes\WordPressSecurity.php on line 364

      // add the filter
      add_filter('wp_admin_css', function($url, $file) {
        errol_log($url);
        // make filter magic happen here...
        return $url;
      }, 10, 2 );
    }

    public function removeWPVersion($src)
    {
      global $wp_version;
      parse_str(parse_url($src, PHP_URL_QUERY), $query);

      if (!empty($query['ver']) && $query['ver'] === $wp_version) {
        $src = remove_query_arg('ver', $src);
      }

      return $src;
    }

wikis
  • 15
  • 3
  • Could you describe the strange behaviour *before* enabling the debug? because generally the described are not breacking changes errors, but you should fix them in the future and, preferably fix all of them. – moghwan Jan 05 '23 at 15:58

0 Answers0