Whoops! There was an error.
Whoops \ Exception \ ErrorException (E_DEPRECATED)
Creation of dynamic property WC_Product_Simple::$fields is deprecated Whoops\Exception\ErrorException thrown with message "Creation of dynamic property WC_Product_Simple::$fields is deprecated" Stacktrace: #15 Whoops\Exception\ErrorException in /home/site110138/public_html/wp-content/plugins/yith-woocommerce-compare/includes/class-yith-woocompare-table.php:147 #14 Whoops\Run:handleError in /home/site110138/public_html/wp-content/plugins/yith-woocommerce-compare/includes/class-yith-woocompare-table.php:147 #13 YITH_WooCompare_Table:get_products in /home/site110138/public_html/wp-content/plugins/yith-woocommerce-compare/includes/class-yith-woocompare-table.php:385 #12 YITH_WooCompare_Table:output_preview_bar in /home/site110138/public_html/wp-content/plugins/yith-woocommerce-compare/includes/class-yith-woocompare-frontend.php:480 #11 YITH_WooCompare_Frontend:output_preview_bar in /home/site110138/public_html/wp-includes/class-wp-hook.php:341 #10 WP_Hook:apply_filters in /home/site110138/public_html/wp-includes/class-wp-hook.php:365 #9 WP_Hook:do_action in /home/site110138/public_html/wp-includes/plugin.php:522 #8 do_action in /home/site110138/public_html/wp-includes/general-template.php:3213 #7 wp_footer in /home/site110138/public_html/wp-content/themes/xstore/footer.php:58 #6 require_once in /home/site110138/public_html/wp-includes/template.php:814 #5 load_template in /home/site110138/public_html/wp-includes/template.php:749 #4 locate_template in /home/site110138/public_html/wp-includes/general-template.php:92 #3 get_footer in /home/site110138/public_html/wp-content/themes/xstore/page.php:65 #2 include in /home/site110138/public_html/wp-includes/template-loader.php:132 #1 require_once in /home/site110138/public_html/wp-blog-header.php:19 #0 require in /home/site110138/public_html/index.php:17
Stack frames (16)
15
Whoops\Exception\ErrorException
/home/site110138/public_html/wp-content/plugins/yith-woocommerce-compare/includes/class-yith-woocompare-table.php147
14
Whoops\Run handleError
/home/site110138/public_html/wp-content/plugins/yith-woocommerce-compare/includes/class-yith-woocompare-table.php147
13
YITH_WooCompare_Table get_products
/home/site110138/public_html/wp-content/plugins/yith-woocommerce-compare/includes/class-yith-woocompare-table.php385
12
YITH_WooCompare_Table output_preview_bar
/home/site110138/public_html/wp-content/plugins/yith-woocommerce-compare/includes/class-yith-woocompare-frontend.php480
11
YITH_WooCompare_Frontend output_preview_bar
/home/site110138/public_html/wp-includes/class-wp-hook.php341
10
WP_Hook apply_filters
/home/site110138/public_html/wp-includes/class-wp-hook.php365
9
WP_Hook do_action
/home/site110138/public_html/wp-includes/plugin.php522
8
do_action
/home/site110138/public_html/wp-includes/general-template.php3213
7
wp_footer
/home/site110138/public_html/wp-content/themes/xstore/footer.php58
6
require_once
/home/site110138/public_html/wp-includes/template.php814
5
load_template
/home/site110138/public_html/wp-includes/template.php749
4
locate_template
/home/site110138/public_html/wp-includes/general-template.php92
3
get_footer
/home/site110138/public_html/wp-content/themes/xstore/page.php65
2
include
/home/site110138/public_html/wp-includes/template-loader.php132
1
require_once
/home/site110138/public_html/wp-blog-header.php19
0
require
/home/site110138/public_html/index.php17
/home/site110138/public_html/wp-content/plugins/yith-woocommerce-compare/includes/class-yith-woocompare-table.php
            /**
             * APPLY_FILTERS: yith_woocompare_exclude_products_from_list
             *
             * Filters the products to exclude some from the comparison table.
             *
             * @param array $products Products to filter.
             * @return array
             */
            $products  = apply_filters( 'yith_woocompare_exclude_products_from_list', $products );
            $fields    = $this->get_fields( $product_ids );
            $formatted = array();

            foreach ( $products as $product_id ) {
                $product = wc_get_product( $product_id );

                if ( ! $product ) {
                    continue;
                }

                $product->fields = array();
                $attributes      = $product->get_attributes();

                foreach ( $fields as $field => $name ) {
                    switch ( $field ) {
                        case 'title':
                            $product->fields[ $field ] = $product->get_title();
                            break;
                        case 'price':
                            $product->fields[ $field ] = $product->get_price_html();
                            break;
                        case 'image':
                            $product->fields[ $field ] = absint( $product->get_image_id() );
                            break;
                        case 'description':
                            // Get description.
                            if ( 'yes' === get_option( 'yith_woocompare_use_full_description', 'no' ) ) {
                                $description = $product->get_description();
                            } else {
                                $description = apply_filters( 'woocommerce_short_description', $product->get_short_description() );
                            }
Arguments
  1. "Creation of dynamic property WC_Product_Simple::$fields is deprecated"
    
/home/site110138/public_html/wp-content/plugins/yith-woocommerce-compare/includes/class-yith-woocompare-table.php
            /**
             * APPLY_FILTERS: yith_woocompare_exclude_products_from_list
             *
             * Filters the products to exclude some from the comparison table.
             *
             * @param array $products Products to filter.
             * @return array
             */
            $products  = apply_filters( 'yith_woocompare_exclude_products_from_list', $products );
            $fields    = $this->get_fields( $product_ids );
            $formatted = array();

            foreach ( $products as $product_id ) {
                $product = wc_get_product( $product_id );

                if ( ! $product ) {
                    continue;
                }

                $product->fields = array();
                $attributes      = $product->get_attributes();

                foreach ( $fields as $field => $name ) {
                    switch ( $field ) {
                        case 'title':
                            $product->fields[ $field ] = $product->get_title();
                            break;
                        case 'price':
                            $product->fields[ $field ] = $product->get_price_html();
                            break;
                        case 'image':
                            $product->fields[ $field ] = absint( $product->get_image_id() );
                            break;
                        case 'description':
                            // Get description.
                            if ( 'yes' === get_option( 'yith_woocompare_use_full_description', 'no' ) ) {
                                $description = $product->get_description();
                            } else {
                                $description = apply_filters( 'woocommerce_short_description', $product->get_short_description() );
                            }
Arguments
  1. 8192
    
  2. "Creation of dynamic property WC_Product_Simple::$fields is deprecated"
    
  3. "/home/site110138/public_html/wp-content/plugins/yith-woocommerce-compare/includes/class-yith-woocompare-table.php"
    
  4. 147
    
/home/site110138/public_html/wp-content/plugins/yith-woocommerce-compare/includes/class-yith-woocompare-table.php
            }

            if ( $table_title ) :
                ?>
                <h2><?php echo wp_kses_post( $table_title ); ?></h2>
                <?php
            endif;

            if ( $table_desc ) :
                ?>
                <p><?php echo wp_kses_post( $table_desc ); ?></p>
                <?php
            endif;
        }

        /**
         * Render preview bar
         */
        public function output_preview_bar() {
            $products               = $this->get_products();
            $has_more               = 5 < count( $products );
            $compare_button_text    = get_option( 'yith_woocompare_button_text_added', __( 'View comparison', 'yith-woocommerce-compare' ) );
            $compare_button_classes = array( 'yith-woocompare-open', 'button', wc_wp_theme_get_element_class_name( 'button' ) );
            $compare_url            = YITH_WooCompare_Frontend::instance()->get_table_url();

            $args = array_merge(
                $this->args,
                array(
                    'has_more'               => $has_more,
                    'remaining'              => $has_more ? count( $products ) - 4 : 0,
                    'products'               => $has_more ? array_slice( $products, 0, 4, true ) : $products,
                    'compare_button_text'    => $compare_button_text,
                    'compare_button_classes' => implode( ' ', $compare_button_classes ),
                    'compare_url'            => $compare_url,
                )
            );

            wc_get_template( $this->preview_bar_template, $args, '', YITH_WOOCOMPARE_TEMPLATE_PATH );
        }

/home/site110138/public_html/wp-content/plugins/yith-woocommerce-compare/includes/class-yith-woocompare-frontend.php

        /* === PREVIEW BAR === */

        /**
         * Output preview bar
         */
        public function output_preview_bar() {
            static $processed = false;

            if ( $processed ) {
                return;
            }

            $processed = true;

            if ( ! apply_filters( 'yith_woocompare_should_show_preview_bar', true ) ) {
                return;
            }

            YITH_WooCompare_Table::instance()->output_preview_bar();
        }
    }
}
 
/home/site110138/public_html/wp-includes/class-wp-hook.php
 
        $this->iterations[ $nesting_level ] = $this->priorities;
 
        $num_args = count( $args );
 
        do {
            $this->current_priority[ $nesting_level ] = current( $this->iterations[ $nesting_level ] );
 
            $priority = $this->current_priority[ $nesting_level ];
 
            foreach ( $this->callbacks[ $priority ] as $the_ ) {
                if ( ! $this->doing_action ) {
                    $args[0] = $value;
                }
 
                // Avoid the array_slice() if possible.
                if ( 0 === $the_['accepted_args'] ) {
                    $value = call_user_func( $the_['function'] );
                } elseif ( $the_['accepted_args'] >= $num_args ) {
                    $value = call_user_func_array( $the_['function'], $args );
                } else {
                    $value = call_user_func_array( $the_['function'], array_slice( $args, 0, $the_['accepted_args'] ) );
                }
            }
        } while ( false !== next( $this->iterations[ $nesting_level ] ) );
 
        unset( $this->iterations[ $nesting_level ] );
        unset( $this->current_priority[ $nesting_level ] );
 
        --$this->nesting_level;
 
        return $value;
    }
 
    /**
     * Calls the callback functions that have been added to an action hook.
     *
     * @since 4.7.0
     *
     * @param array $args Parameters to pass to the callback functions.
Arguments
  1. ""
    
/home/site110138/public_html/wp-includes/class-wp-hook.php
        } while ( false !== next( $this->iterations[ $nesting_level ] ) );
 
        unset( $this->iterations[ $nesting_level ] );
        unset( $this->current_priority[ $nesting_level ] );
 
        --$this->nesting_level;
 
        return $value;
    }
 
    /**
     * Calls the callback functions that have been added to an action hook.
     *
     * @since 4.7.0
     *
     * @param array $args Parameters to pass to the callback functions.
     */
    public function do_action( $args ) {
        $this->doing_action = true;
        $this->apply_filters( '', $args );
 
        // If there are recursive calls to the current action, we haven't finished it until we get to the last one.
        if ( ! $this->nesting_level ) {
            $this->doing_action = false;
        }
    }
 
    /**
     * Processes the functions hooked into the 'all' hook.
     *
     * @since 4.7.0
     *
     * @param array $args Arguments to pass to the hook callbacks. Passed by reference.
     */
    public function do_all_hook( &$args ) {
        $nesting_level                      = $this->nesting_level++;
        $this->iterations[ $nesting_level ] = $this->priorities;
 
        do {
            $priority = current( $this->iterations[ $nesting_level ] );
Arguments
  1. null
    
  2. array:1 [
      0 => ""
    ]
    
/home/site110138/public_html/wp-includes/plugin.php
    if ( ! isset( $wp_filter[ $hook_name ] ) ) {
        if ( isset( $wp_filter['all'] ) ) {
            array_pop( $wp_current_filter );
        }
 
        return;
    }
 
    if ( ! isset( $wp_filter['all'] ) ) {
        $wp_current_filter[] = $hook_name;
    }
 
    if ( empty( $arg ) ) {
        $arg[] = '';
    } elseif ( is_array( $arg[0] ) && 1 === count( $arg[0] ) && isset( $arg[0][0] ) && is_object( $arg[0][0] ) ) {
        // Backward compatibility for PHP4-style passing of `array( &$this )` as action `$arg`.
        $arg[0] = $arg[0][0];
    }
 
    $wp_filter[ $hook_name ]->do_action( $arg );
 
    array_pop( $wp_current_filter );
}
 
/**
 * Calls the callback functions that have been added to an action hook, specifying arguments in an array.
 *
 * @since 2.1.0
 *
 * @see do_action() This function is identical, but the arguments passed to the
 *                  functions hooked to `$hook_name` are supplied using an array.
 *
 * @global WP_Hook[] $wp_filter         Stores all of the filters and actions.
 * @global int[]     $wp_actions        Stores the number of times each action was triggered.
 * @global string[]  $wp_current_filter Stores the list of current filters with the current one last.
 *
 * @param string $hook_name The name of the action to be executed.
 * @param array  $args      The arguments supplied to the functions hooked to `$hook_name`.
 */
function do_action_ref_array( $hook_name, $args ) {
Arguments
  1. array:1 [
      0 => ""
    ]
    
/home/site110138/public_html/wp-includes/general-template.php
     *
     * @since 1.5.0
     */
    do_action( 'wp_head' );
}
 
/**
 * Fires the wp_footer action.
 *
 * See {@see 'wp_footer'}.
 *
 * @since 1.5.1
 */
function wp_footer() {
    /**
     * Prints scripts or data before the closing body tag on the front end.
     *
     * @since 1.5.1
     */
    do_action( 'wp_footer' );
}
 
/**
 * Fires the wp_body_open action.
 *
 * See {@see 'wp_body_open'}.
 *
 * @since 5.2.0
 */
function wp_body_open() {
    /**
     * Triggered after the opening body tag.
     *
     * @since 5.2.0
     */
    do_action( 'wp_body_open' );
}
 
/**
 * Displays the links to the general feeds.
Arguments
  1. "wp_footer"
    
/home/site110138/public_html/wp-content/themes/xstore/footer.php
         */
        do_action( 'etheme_footer' );
     ?>
</div>
 
</div> <!-- template-content -->
 
<?php do_action('after_page_wrapper'); ?>
</div> <!-- template-container -->
 
<?php endif; ?>
 
 
<?php
/* Always have wp_footer() just before the closing </body>
 * tag of your theme, or you will break many plugins, which
 * generally use this hook to reference JavaScript files.
 */
 
wp_footer();
?>
</body>
 
</html>
/home/site110138/public_html/wp-includes/template.php
        extract( $wp_query->query_vars, EXTR_SKIP );
    }
 
    if ( isset( $s ) ) {
        $s = esc_attr( $s );
    }
 
    /**
     * Fires before a template file is loaded.
     *
     * @since 6.1.0
     *
     * @param string $_template_file The full path to the template file.
     * @param bool   $load_once      Whether to require_once or require.
     * @param array  $args           Additional arguments passed to the template.
     */
    do_action( 'wp_before_load_template', $_template_file, $load_once, $args );
 
    if ( $load_once ) {
        require_once $_template_file;
    } else {
        require $_template_file;
    }
 
    /**
     * Fires after a template file is loaded.
     *
     * @since 6.1.0
     *
     * @param string $_template_file The full path to the template file.
     * @param bool   $load_once      Whether to require_once or require.
     * @param array  $args           Additional arguments passed to the template.
     */
    do_action( 'wp_after_load_template', $_template_file, $load_once, $args );
}
 
/**
 * Checks whether the template should be output buffered for enhancement.
 *
 * By default, an output buffer is only started if a {@see 'wp_template_enhancement_output_buffer'} filter has been
Arguments
  1. "/home/site110138/public_html/wp-content/themes/xstore/footer.php"
    
/home/site110138/public_html/wp-includes/template.php
 
    $located = '';
    foreach ( (array) $template_names as $template_name ) {
        if ( ! $template_name ) {
            continue;
        }
        if ( file_exists( $wp_stylesheet_path . '/' . $template_name ) ) {
            $located = $wp_stylesheet_path . '/' . $template_name;
            break;
        } elseif ( $is_child_theme && file_exists( $wp_template_path . '/' . $template_name ) ) {
            $located = $wp_template_path . '/' . $template_name;
            break;
        } elseif ( file_exists( ABSPATH . WPINC . '/theme-compat/' . $template_name ) ) {
            $located = ABSPATH . WPINC . '/theme-compat/' . $template_name;
            break;
        }
    }
 
    if ( $load && '' !== $located ) {
        load_template( $located, $load_once, $args );
    }
 
    return $located;
}
 
/**
 * Requires the template file with WordPress environment.
 *
 * The globals are set up for the template file to ensure that the WordPress
 * environment is available from within the function. The query variables are
 * also available.
 *
 * @since 1.5.0
 * @since 5.5.0 The `$args` parameter was added.
 *
 * @global array      $posts
 * @global WP_Post    $post          Global post object.
 * @global bool       $wp_did_header
 * @global WP_Query   $wp_query      WordPress Query object.
 * @global WP_Rewrite $wp_rewrite    WordPress rewrite component.
Arguments
  1. "/home/site110138/public_html/wp-content/themes/xstore/footer.php"
    
  2. true
    
  3. []
    
/home/site110138/public_html/wp-includes/general-template.php
     * Fires before the footer template file is loaded.
     *
     * @since 2.1.0
     * @since 2.8.0 The `$name` parameter was added.
     * @since 5.5.0 The `$args` parameter was added.
     *
     * @param string|null $name Name of the specific footer file to use. Null for the default footer.
     * @param array       $args Additional arguments passed to the footer template.
     */
    do_action( 'get_footer', $name, $args );
 
    $templates = array();
    $name      = (string) $name;
    if ( '' !== $name ) {
        $templates[] = "footer-{$name}.php";
    }
 
    $templates[] = 'footer.php';
 
    if ( ! locate_template( $templates, true, true, $args ) ) {
        return false;
    }
}
 
/**
 * Loads sidebar template.
 *
 * Includes the sidebar template for a theme or if a name is specified then a
 * specialized sidebar will be included.
 *
 * For the parameter, if the file is called "sidebar-special.php" then specify
 * "special".
 *
 * @since 1.5.0
 * @since 5.5.0 A return value was added.
 * @since 5.5.0 The `$args` parameter was added.
 *
 * @param string|null $name The name of the specialized sidebar. Default null.
 * @param array       $args Optional. Additional arguments passed to the sidebar template.
 *                          Default empty array.
Arguments
  1. array:1 [
      0 => "footer.php"
    ]
    
  2. true
    
  3. true
    
  4. []
    
/home/site110138/public_html/wp-content/themes/xstore/page.php
 
                <?php endif; ?>
 
                <?php
                // If comments are open or we have at least one comment, load up the comment template.
                if ( comments_open() || get_comments_number() )
                    comments_template('', true);
                ?>
 
            </div>
 
            <?php get_sidebar(); ?>
 
        </div><!-- end row-fluid -->
 
    </div>
</div><!-- end container -->
 
<?php
get_footer();
 
/home/site110138/public_html/wp-includes/template-loader.php
     */
    $template   = apply_filters( 'template_include', $template );
    $is_stringy = is_string( $template ) || ( is_object( $template ) && method_exists( $template, '__toString' ) );
    $template   = $is_stringy ? realpath( (string) $template ) : null;
    if (
        is_string( $template ) &&
        ( str_ends_with( $template, '.php' ) || str_ends_with( $template, '.html' ) ) &&
        is_file( $template ) &&
        is_readable( $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/site110138/public_html/wp-content/themes/xstore/page.php"
    
/home/site110138/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/site110138/public_html/wp-includes/template-loader.php"
    
/home/site110138/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/site110138/public_html/wp-blog-header.php"
    

Environment & details:

empty
empty
empty
Key Value
YITH_WooCompare_Products_List
"[52744]"
empty
Key Value
SERVER_SOFTWARE
"nginx"
REQUEST_URI
"/"
USER
"site110138"
HOME
"/home/site110138"
HTTP_COOKIE
"YITH_WooCompare_Products_List=%5B52744%5D"
HTTP_REFERER
"https://plantalux.ro/?action=yith-woocompare-add-product&id=52744"
HTTP_USER_AGENT
"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
HTTP_ACCEPT
"*/*"
HTTP_X_JDM_GEOIPEU
"yes"
HTTP_X_JDM_GEOIPASN
"16509"
HTTP_X_JDM_GEOIPCN
"United States"
HTTP_CONNECTION
"close"
HTTP_X_CACHE_BYPASSED
"1"
HTTP_ACCEPT_ENCODING
"gzip, br, zstd, deflate"
X-JDM-EU
"yes"
X-JDM-ASN
"16509"
X-JDM-CN
"United States"
X-JDM-CC
"US"
HTTP_HOST
"plantalux.ro"
CACHE_BYPASSED
"1"
HTTPS
"on"
REDIRECT_STATUS
"200"
SERVER_NAME
"plantalux.ro"
SERVER_PORT
"443"
SERVER_ADDR
"157.90.133.54"
REMOTE_PORT
"29289"
REMOTE_ADDR
"216.73.216.56"
GATEWAY_INTERFACE
"CGI/1.1"
REQUEST_SCHEME
"https"
SERVER_PROTOCOL
"HTTP/1.0"
DOCUMENT_ROOT
"/home/site110138/public_html"
DOCUMENT_URI
"/index.php"
SCRIPT_NAME
"/index.php"
CONTENT_LENGTH
""
CONTENT_TYPE
""
REQUEST_METHOD
"GET"
QUERY_STRING
""
SCRIPT_FILENAME
"/home/site110138/public_html/index.php"
FCGI_ROLE
"RESPONDER"
PHP_SELF
"/index.php"
REQUEST_TIME_FLOAT
1775060522.6577
REQUEST_TIME
1775060522
empty
0. Whoops\Handler\PrettyPageHandler