Modules \ Views \ Exceptions \ ViewNotFoundException
View 'site/shop/product' not found. Modules\Views\Exceptions\ViewNotFoundException thrown with message "View 'site/shop/product' not found." Stacktrace: #9 Modules\Views\Exceptions\ViewNotFoundException in /home/farmaboo/domains/underbodyguards.com/public_html/wp-content/themes/wph/modules/Views/ViewFinder.php:46 #8 Modules\Views\ViewFinder:handle in /home/farmaboo/domains/underbodyguards.com/public_html/wp-content/themes/wph/modules/Views/ViewFinder.php:62 #7 Modules\Views\ViewFinder:find in /home/farmaboo/domains/underbodyguards.com/public_html/wp-content/themes/wph/modules/Views/ViewFactory.php:34 #6 Modules\Views\ViewFactory:provide in /home/farmaboo/domains/underbodyguards.com/public_html/wp-content/themes/wph/modules/Views/viewsModule.php:20 #5 view in /home/farmaboo/domains/underbodyguards.com/public_html/wp-content/themes/wph/woocommerce.php:7 #4 {closure:/home/farmaboo/domains/underbodyguards.com/public_html/wp-content/themes/wph/woocommerce.php:5} in /home/farmaboo/domains/underbodyguards.com/public_html/wp-content/themes/wph/modules/Helpers/misc.php:120 #3 iife in /home/farmaboo/domains/underbodyguards.com/public_html/wp-content/themes/wph/woocommerce.php:5 #2 include in /home/farmaboo/domains/underbodyguards.com/public_html/wp-includes/template-loader.php:125 #1 require_once in /home/farmaboo/domains/underbodyguards.com/public_html/wp-blog-header.php:19 #0 require in /home/farmaboo/domains/underbodyguards.com/public_html/index.php:17
Stack frames (10)
9
Modules\Views\Exceptions\ViewNotFoundException
/wp-content/themes/wph/modules/Views/ViewFinder.php:46
8
Modules\Views\ViewFinder handle
/wp-content/themes/wph/modules/Views/ViewFinder.php:62
7
Modules\Views\ViewFinder find
/wp-content/themes/wph/modules/Views/ViewFactory.php:34
6
Modules\Views\ViewFactory provide
/wp-content/themes/wph/modules/Views/viewsModule.php:20
5
view
/wp-content/themes/wph/woocommerce.php:7
4
{closure:/home/farmaboo/domains/underbodyguards.com/public_html/wp-content/themes/wph/woocommerce.php:5}
/wp-content/themes/wph/modules/Helpers/misc.php:120
3
iife
/wp-content/themes/wph/woocommerce.php:5
2
include
/wp-includes/template-loader.php:125
1
require_once
/wp-blog-header.php:19
0
require
/index.php:17
/home/farmaboo/domains/underbodyguards.com/public_html/wp-content/themes/wph/modules/Views/ViewFinder.php
        $index = strrpos($path, '/');
        if ($index !== false) {
            return substr($path, $index + 1);
        } else {
            return $path;
        }
    }

    /**
     * @param string $path
     * @return ViewLocation
     */
    private function handle($path)
    {
        $baseName = $this->baseName($path);
        $directory = "{$this->basePath}/{$path}";
        $fullPath = "{$directory}/{$baseName}.php";

        if (!h_is_file_exists($fullPath)) {
            throw new ViewNotFoundException(
                "View '{$path}' not found.",
            );
        }

        $location = new ViewLocation($fullPath, $directory, $baseName);
        $this->found[$path] = $location;
        return $location;
    }

    /**
     * @param string $path
     * @return ViewLocation
     */
    public function find($path)
    {
        return $this->found[$path] ?? $this->handle($path);
    }
}
 
Arguments
  1. "View 'site/shop/product' not found."
    
/home/farmaboo/domains/underbodyguards.com/public_html/wp-content/themes/wph/modules/Views/ViewFinder.php
        $fullPath = "{$directory}/{$baseName}.php";

        if (!h_is_file_exists($fullPath)) {
            throw new ViewNotFoundException(
                "View '{$path}' not found.",
            );
        }

        $location = new ViewLocation($fullPath, $directory, $baseName);
        $this->found[$path] = $location;
        return $location;
    }

    /**
     * @param string $path
     * @return ViewLocation
     */
    public function find($path)
    {
        return $this->found[$path] ?? $this->handle($path);
    }
}
 
/home/farmaboo/domains/underbodyguards.com/public_html/wp-content/themes/wph/modules/Views/ViewFactory.php
     * @return string
     */
    private function resolve($target, $relative)
    {
        if (str_contains($target, './')) {
            return $this->resolver->resolve($target, $relative);
        } else {
            return $target;
        }
    }

    /**
     * @param string $target
     * @param string|null $relative
     * @return View
     */
    public function provide($target, $relative = null)
    {
        $path = $this->resolve($target, $relative);
        $location = $this->finder->find($path);

        return new View(
            $path,
            $location,
        );
    }
}
 
/home/farmaboo/domains/underbodyguards.com/public_html/wp-content/themes/wph/modules/Views/viewsModule.php
<?php

use Modules\Views\View;
use Modules\Views\ViewFactory;
use Modules\Views\ViewFinder;
use Modules\Views\ViewSections;
use Modules\Views\ViewState;

/**
 * @param string $target
 * @param string|null $relative
 * @return View
 */
function view($target, $relative = null)
{
    $active = vh_active_view();
    if ($active && func_num_args() === 1) {
        $relative = $active->path;
    }
    return vh_factory()->provide($target, $relative);
}

function vh_empty()
{
    return 0;
}

/**
 * @param string $path
 * @return View
 */
function vh_sub($path)
{
    $active = vh_active_view();
    if (!$active) {
        throw new RuntimeException(
            'Unable to create sub view outside view rendering',
        );
    }
    return view($active->path . '/' . $path);
/home/farmaboo/domains/underbodyguards.com/public_html/wp-content/themes/wph/woocommerce.php
<?php
 
defined('WPH') or exit;
 
iife(function () {
    if (is_product()) {
        view('site/shop/product')
            ->defaultLayout()
            ->print();
    } else {
        view('site/shop/catalog')
            ->defaultLayout()
            ->print();
    }
});
 
/home/farmaboo/domains/underbodyguards.com/public_html/wp-content/themes/wph/modules/Helpers/misc.php
}
 
/**
 * @param string|object $class
 * @return string
 */
function class_basename($class)
{
    $class = is_object($class) ? get_class($class) : $class;
    $class = str_replace('\\', '/', $class);
    return basename($class);
}
 
/**
 * @param Closure $fn
 * @return mixed
 */
function iife(Closure $fn)
{
    return $fn();
}
 
/**
 * @param string $base
 * @param string ...$parts
 * @return string
 */
function h_build_path($base, ...$parts)
{
    $result = $base;
    foreach ($parts as $part) {
        $part = trim($part, '/\\');
        $result .= '/' . $part;
    }
    return $result;
}
 
/**
 * @param string $path
 * @param array $data
/home/farmaboo/domains/underbodyguards.com/public_html/wp-content/themes/wph/woocommerce.php
<?php
 
defined('WPH') or exit;
 
iife(function () {
    if (is_product()) {
        view('site/shop/product')
            ->defaultLayout()
            ->print();
    } else {
        view('site/shop/catalog')
            ->defaultLayout()
            ->print();
    }
});
 
/home/farmaboo/domains/underbodyguards.com/public_html/wp-includes/template-loader.php
 
    /**
     * Filters the path of the current template before including it.
     *
     * @since 3.0.0
     *
     * @param string $template The path of the template to include.
     */
    $template = apply_filters( 'template_include', $template );
    if ( $template ) {
        /**
         * Fires immediately before including the template.
         *
         * @since 6.9.0
         *
         * @param string $template The path of the template about to be included.
         */
        do_action( 'wp_before_include_template', $template );
 
        include $template;
    } elseif ( current_user_can( 'switch_themes' ) ) {
        $theme = wp_get_theme();
        if ( $theme->errors() ) {
            wp_die( $theme->errors() );
        }
    }
    return;
}
 
Arguments
  1. "/home/farmaboo/domains/underbodyguards.com/public_html/wp-content/themes/wph/woocommerce.php"
    
/home/farmaboo/domains/underbodyguards.com/public_html/wp-blog-header.php
<?php
/**
 * Loads the WordPress environment and template.
 *
 * @package WordPress
 */
 
if ( ! isset( $wp_did_header ) ) {
 
    $wp_did_header = true;
 
    // Load the WordPress library.
    require_once __DIR__ . '/wp-load.php';
 
    // Set up the WordPress query.
    wp();
 
    // Load the theme template.
    require_once ABSPATH . WPINC . '/template-loader.php';
 
}
 
Arguments
  1. "/home/farmaboo/domains/underbodyguards.com/public_html/wp-includes/template-loader.php"
    
/home/farmaboo/domains/underbodyguards.com/public_html/index.php
<?php
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */
 
/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define( 'WP_USE_THEMES', true );
 
/** Loads the WordPress Environment and Template */
require __DIR__ . '/wp-blog-header.php';
 
Arguments
  1. "/home/farmaboo/domains/underbodyguards.com/public_html/wp-blog-header.php"
    

Environment & details:

empty
empty
empty
Key Value
wp_woocommerce_session_275e643f88a01dad2fe736994439aafd
"t_dc794a4a0dc112e0cce5441e8b0eff|1773118932|1773032532|$generic$PJk2Ei2pZKJvB3303x7llE_U2Mifbgk7ZJJMxt87"
woocommerce_items_in_cart
"1"
woocommerce_cart_hash
"3d236291b9d738d51c44f75bd5207c1a"
empty
Key Value
SERVER_SOFTWARE
"Apache/2"
REQUEST_URI
"/product/steel-skid-plate-for-nissan-juke/"
PATH
"/usr/local/bin:/usr/bin:/bin"
TEMP
"/tmp"
TMP
"/tmp"
TMPDIR
"/tmp"
PWD
"/"
HTTP_ACCEPT
"*/*"
HTTP_ACCEPT_ENCODING
"gzip, br, zstd, deflate"
HTTP_CONNECTION
"close"
CONTENT_LENGTH
"0"
HTTP_COOKIE
"wp_woocommerce_session_275e643f88a01dad2fe736994439aafd=t_dc794a4a0dc112e0cce5441e8b0eff%7C1773118932%7C1773032532%7C%24generic%24PJk2Ei2pZKJvB3303x7llE_U2Mifbgk7ZJJMxt87; woocommerce_items_in_cart=1; woocommerce_cart_hash=3d236291b9d738d51c44f75bd5207c1a"
HTTP_HOST
"underbodyguards.com"
HTTP_REFERER
"https://underbodyguards.com/product/steel-skid-plate-for-nissan-juke"
HTTP_USER_AGENT
"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
HTTP_X_FORWARDED_FOR
"216.73.216.102"
HTTP_X_ACCEL_INTERNAL
"/nginx_static_files"
REDIRECT_UNIQUE_ID
"aa0C35CYKSDe2ibUGubE9AAAAF4"
REDIRECT_HTTP_AUTHORIZATION
""
REDIRECT_HTTPS
"on"
REDIRECT_STATUS
"200"
UNIQUE_ID
"aa0C35CYKSDe2ibUGubE9AAAAF4"
HTTP_AUTHORIZATION
""
HTTPS
"on"
SERVER_SIGNATURE
""
SERVER_NAME
"underbodyguards.com"
SERVER_ADDR
"95.168.171.175"
SERVER_PORT
"443"
REMOTE_ADDR
"216.73.216.102"
DOCUMENT_ROOT
"/home/farmaboo/domains/underbodyguards.com/private_html"
REQUEST_SCHEME
"https"
CONTEXT_PREFIX
""
CONTEXT_DOCUMENT_ROOT
"/home/farmaboo/domains/underbodyguards.com/private_html"
SERVER_ADMIN
"webmaster@underbodyguards.com"
SCRIPT_FILENAME
"/home/farmaboo/domains/underbodyguards.com/private_html/index.php"
REMOTE_PORT
"40658"
REDIRECT_URL
"/product/steel-skid-plate-for-nissan-juke/"
SERVER_PROTOCOL
"HTTP/1.0"
REQUEST_METHOD
"GET"
QUERY_STRING
""
SCRIPT_NAME
"/index.php"
PHP_SELF
"/index.php"
REQUEST_TIME_FLOAT
1772946143.331
REQUEST_TIME
1772946143
empty
0. Whoops\Handler\PrettyPageHandler