PHP Notice: Id richiamato in maniera scorretta

di il
19 risposte

PHP Notice: Id richiamato in maniera scorretta

Ciao a tutti, mi ritrovo con un problemino che non riesco proprio a risolvere e che mi sta generando dei file di LOG gargantueschi nel mio sito wordpress.
So che è un problema legato a un tema e che dovrebbe essere aggiornato dallo sviluppatore ma il tema non è più supportato e quindi me la devo sistemare da solo.

L'errore è il seguente:
PHP Notice:  id è stato richiamato <strong>in maniera scorretta</strong>. Non puoi accedere direttamente alle proprietà del prodotto. Backtrace: require('wp-blog-header.php'), require_once('wp-includes/template-loader.php'), include('/themes/arw-leka/woocommerce.php'), woocommerce_content, wc_get_template_part, load_template, require('/themes/arw-leka/woocommerce/content-product.php'), do_action('arexworks_shop_loop_item_action'), WP_Hook->do_action, WP_Hook->apply_filters, arexworks_woocommerce_add_button_quick_view_in_list, WC_Abstract_Legacy_Product->__get, wc_doing_it_wrong
E il codice che trovo dentro il file (/themes/arw-leka/woocommerce/content-product.php) è il seguente:
<?php
/**
 * The template for displaying product content within loops
 *
 * This template can be overridden by copying it to yourtheme/woocommerce/content-product.php.
 *
 * HOWEVER, on occasion WooCommerce will need to update template files and you
 * (the theme developer) will need to copy the new files to your theme to
 * maintain compatibility. We try to do this as little as possible, but it does
 * happen. When this occurs the version of the template file will be bumped and
 * the readme will list any important changes.
 *
 * @see     https://docs.woothemes.com/document/template-structure/
 * @author  WooThemes
 * @package WooCommerce/Templates
 * @version 2.6.1
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

global $product, $woocommerce_loop;

// Store loop count we're currently on
if ( empty( $woocommerce_loop['loop'] ) ) {
	$woocommerce_loop['loop'] = 0;
}

// Store column count for displaying the grid
if ( empty( $woocommerce_loop['columns'] ) ) {
	$woocommerce_loop['columns'] = apply_filters( 'loop_shop_columns', 3 );
}

// Ensure visibility
if ( empty( $product ) || ! $product->is_visible() ) {
	return;
}

// Increase loop count
$woocommerce_loop['loop']++;

// Extra post classes
$classes = array();
if ( 0 === ( $woocommerce_loop['loop'] - 1 ) % $woocommerce_loop['columns'] || 1 === $woocommerce_loop['columns'] ) {
	$classes[] = 'first';
}
if ( 0 === $woocommerce_loop['loop'] % $woocommerce_loop['columns'] ) {
	$classes[] = 'last';
}

if ( $woocommerce_loop['loop'] % 2 == 0 ){
	$classes[] = 'even';
}else{
	$classes[] = 'odd';
}


$mode_view = 'grid';
if ( isset ( $woocommerce_loop['mode_view'] ) && !empty( $woocommerce_loop['mode_view'] ) ){
	$mode_view = $woocommerce_loop['mode_view'];
}
$array_attachment = array();
$attachment_ids = $product->get_gallery_image_ids();
$thumb_image = $large_image = $alt_image = '';

if ( $attachment_ids && arexworks_get_option_data('second_image_product_listing')) {
    foreach ( $attachment_ids as $attachment_id ) {
        $image = wp_get_attachment_image( $attachment_id, apply_filters( 'loop_product_catalog_thumbnail_size', 'shop_catalog' ) ,false , array('class'=>'alt_img'));
        if($image){
            $alt_image = $image;
            break;
        }
    }
}

if ( $mode_view == 'list2' ){
	if ( has_post_thumbnail() ){
		$image_shop_single = wp_get_attachment_image_src( get_post_thumbnail_id(), apply_filters( 'single_product_large_thumbnail_size', 'shop_single' ) );
		$image_shop_thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id(), apply_filters( 'single_product_small_thumbnail_size', 'shop_thumbnail' ) );
		if ( isset( $image_shop_single[0] ) && isset( $image_shop_thumbnail[0] ) ){
			$array_attachment[] = array(
				'shop_single' => $image_shop_single[0],
				'shop_thumbnail' => $image_shop_thumbnail[0]
			);
		}
	}
	if ( $attachment_ids ){
		foreach ( $attachment_ids as $attachment_id ) {
			$image_shop_single = wp_get_attachment_image_src( $attachment_id, apply_filters( 'single_product_large_thumbnail_size', 'shop_single' ) );
			$image_shop_thumbnail = wp_get_attachment_image_src( $attachment_id, apply_filters( 'single_product_small_thumbnail_size', 'shop_thumbnail' ) );
			if ( isset( $image_shop_single[0] ) && isset( $image_shop_thumbnail[0] ) ){
				$array_attachment[] = array(
					'shop_single' => $image_shop_single[0],
					'shop_thumbnail' => $image_shop_thumbnail[0]
				);
			}
		}
	}
	if( !empty($array_attachment) && isset( $array_attachment[0]['shop_single'] ) ){
		$large_image = sprintf(
			'<img src="%s" alt="%s" class="%s"/>',
			esc_url( $array_attachment[0]['shop_single'] ),
			esc_attr(get_the_title()),
			"attachment-shop_catalog_large wp-post-image"
		);
	}

	if( !empty($array_attachment) ){
		foreach( $array_attachment as $attachment ){
			$thumb_image .= sprintf(
				'<a href="%s"><img src="%s" alt="%s"/></a>',
				esc_url( $attachment['shop_single'] ),
				esc_url( $attachment['shop_thumbnail'] ),
				esc_attr(get_the_title())
			);
		}
	}

	$alt_image = '';
	remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );
}
?>
<style>
	.loghi{
		max-height: 50px;
	}
	.loghi span span {
	    font-size: 29px;
	}
	div.loghi {
	    width: 150px;
	    text-align: center;
	    float: left;
	    font-size: 18px;
	    padding-top: 1%;
	    font-weight: 900;
	    color: black;
	    padding-left: 1%;
	}	
	.nascosto{
			display:none;
	}
	
	ul#gform_fields_1 li {
		list-style-type: none;
	}	
	
.info {
    width: 80%;
    text-align: center;
    background: #cb0918;
    color: white;
    font-size: 2.5rem;
    padding: 10px;
    border-radius: 5px;
    margin: 0 auto;
    margin-top: 10px;
}	

.page-header-layout-1 .page-header-wrapper {
    padding-top: 30px;
    padding-bottom: 30px;
}

#page_wrapper>.main {
    padding-top: 30px;
}

</style>


<li <?php post_class( $classes ); ?>>
    <div class="product-inner">
        <?php do_action( 'woocommerce_before_shop_loop_item' ); ?>
        <div class="product_images_wrapper<?php echo $alt_image ? ' has-alt-image' : ''?>">
            <div class="product_thumbnail">
                <div class="product_images_hover">
                    <div class="product_actions">
                        <?php
                        /**
                         * @hooked arexworks_woocommerce_add_button_compare_in_list - 10
                         * @hooked arexworks_woocommerce_add_button_wishlist_in_list - 15
                         * @hooked arexworks_woocommerce_add_button_quick_view_in_list - 20
                         */
                        do_action( 'arexworks_shop_loop_item_action' );
                        ?>
                    </div>
                </div>
                <?php
	                /**
	                 * @hooked woocommerce_template_loop_product_thumbnail - 10
	                 * @hooked arexworks_woocommerce_add_badge_new_in_list - 15
	                 */
                    do_action( 'woocommerce_before_shop_loop_item_title' );
                    echo $alt_image . $large_image;
                ?>
                <a href="#" rel="nofollow" class="product_link" style="cursor: default;"></a>
            </div>
        </div>
        <div class="product-item-info">
	       <div style="text-align:center; font-style:italic; color:#54565A; padding-top:15px; padding-bottom:0px"> <span style="font-size:26px;"><!--<a class="product-title-link" href="<?php the_permalink(); ?>">--><?php the_title(); ?><!--</a>--></span></div>
	        <?php
		        /**
		         * @hooked woocommerce_template_loop_rating - 5
		         * @hooked wrap-price - 9
		         * @hooked woocommerce_template_loop_price - 10
		         * @hooked wrap-price - 11
		         * @hooked arexworks_woocommerce_add_short_description_in_list - 20
		         */
	            do_action( 'woocommerce_after_shop_loop_item_title' );
	        ?>

	        <div class="product_actions_list">
		        <?php
		        do_action( 'woocommerce_after_shop_loop_item', 'arexworks_shop_loop_item_action' );
		        ?>
	        </div>

	        <?php
	        /**
	         * @hooked woocommerce_template_loop_add_to_cart - 10
	         */
	            do_action( 'woocommerce_after_shop_loop_item' );
	        ?>

	        <?php
	        if( !empty( $thumb_image ) ){
		        echo '<div class="product_actions_images"><div class="product_actions_images-wrapper">' . $thumb_image . '</div></div>';
	        }
	        ?>
        </div>
    </div>
</li>
Non riesco proprio a capire cosa devo modificare per far rientrare l'errore.
Ho fatto svariate ricerche online ma non sono riuscito a trovare risposte utili a riguardo.
Qualcuno saprebbe aiutarmi?
Ringrazio in anticipo

19 Risposte

  • Re: PHP Notice: Id richiamato in maniera scorretta

    Ciao,
    L'errore parla di id... Che non trovo nel codice che hai postato.

    La notice che hai postato è completa?

    Molto probabilmente c'è da fare una modifiche da id in get_id()

    Ciao
  • Re: PHP Notice: Id richiamato in maniera scorretta

    Mi posti il codice di questo file per cortesia...

    wc-quantity-field-shop-page.php

    Ciao
  • Re: PHP Notice: Id richiamato in maniera scorretta

    Dimenticavo.... Benvenuto o benvenuta.... nel forum...
  • Re: PHP Notice: Id richiamato in maniera scorretta

    Ciao Cali,

    grazie per il benvenuto e grazie per l'interessamento!!

    Anch'io mi aspettavo di trovare un id da cambiare in get_id ma così non è...

    In merito alla tua richiesta, nei file del mio tema non c'è nessun .php con quel nome... anche facendo una ricerca estesa a tutto il public HTML non restituisce nulla...

    L'unica cosa vagamente simile che sta dentro al file del tema è questo quantity-input.php e contiene questo codice:
    <?php
    /**
     * Product quantity inputs
     *
     * This template can be overridden by copying it to yourtheme/woocommerce/global/quantity-input.php.
     *
     * HOWEVER, on occasion WooCommerce will need to update template files and you (the theme developer).
     * will need to copy the new files to your theme to maintain compatibility. We try to do this.
     * as little as possible, but it does happen. When this occurs the version of the template file will.
     * be bumped and the readme will list any important changes.
     *
     * @see 	    http://docs.woothemes.com/document/template-structure/
     * @author 		WooThemes
     * @package 	WooCommerce/Templates
     * @version     2.5.0
     */
    
    if ( ! defined( 'ABSPATH' ) ) {
    	exit; // Exit if accessed directly
    }
    
    ?>
    <div class="quantity">
    	<div class="desc-qty button-qty"><span style="display: none;"><i class="fa fa-angle-up"></i></span></div><?php
    	?><input type="number" step="<?php echo esc_attr( $step ); ?>" min="<?php echo esc_attr( $min_value ); ?>" max="<?php echo esc_attr( $max_value ); ?>" name="<?php echo esc_attr( $input_name ); ?>" value="<?php echo esc_attr( $input_value ); ?>" title="<?php echo esc_attr_x( 'Qty', 'Product quantity input tooltip', 'woocommerce' ) ?>" class="input-text qty text" size="4" /><?php
        ?><div class="inc-qty button-qty"><span style="display: none;"><i class="fa fa-angle-down"></i></span></div>
    </div>
  • Re: PHP Notice: Id richiamato in maniera scorretta

    In ogni caso, qui la notice completa:
    [08-Apr-2021 15:16:43 UTC] PHP Notice:  id è stato richiamato <strong>in maniera scorretta</strong>. Non puoi accedere direttamente alle proprietà del prodotto. Backtrace: require('wp-blog-header.php'), require_once('wp-includes/template-loader.php'), include('/themes/arw-leka/woocommerce.php'), woocommerce_content, wc_get_template_part, load_template, require('/themes/arw-leka/woocommerce/content-product.php'), do_action('arexworks_shop_loop_item_action'), WP_Hook->do_action, WP_Hook->apply_filters, arexworks_woocommerce_add_button_quick_view_in_list, WC_Abstract_Legacy_Product->__get, wc_doing_it_wrong Leggi <a href="https://wordpress.org/support/article/debugging-in-wordpress/">Debugging in WordPress</a> per maggiori informazioni. (Questo messaggio è stato aggiunto nella versione 3.0.) in /home/vivared/public_html/wp-includes/functions.php on line 5313
  • Re: PHP Notice: Id richiamato in maniera scorretta

    Vediamo un po' il file che ti dice....

    home/vivared/public_html/wp-includes/functions.php

    Nella linea 5313.... Cosa c'è?
  • Re: PHP Notice: Id richiamato in maniera scorretta

    O posti i codici dei file che ti dice o li apri e cerchi questo famoso id.

    C'è da perderci tempo....
  • Re: PHP Notice: Id richiamato in maniera scorretta

    Prima cosa che ho controllato... senza ricavare nulla, te la riporto in ogni caso (dalla 5281 alla 5336) la 5313 è quella con scritto semplicemente E_USER_NOTICE, il secondo dal basso:
    	/**
    	 * Filters whether to trigger an error for _doing_it_wrong() calls.
    	 *
    	 * @since 3.1.0
    	 * @since 5.1.0 Added the $function, $message and $version parameters.
    	 *
    	 * @param bool   $trigger  Whether to trigger the error for _doing_it_wrong() calls. Default true.
    	 * @param string $function The function that was called.
    	 * @param string $message  A message explaining what has been done incorrectly.
    	 * @param string $version  The version of WordPress where the message was added.
    	 */
    	if ( WP_DEBUG && apply_filters( 'doing_it_wrong_trigger_error', true, $function, $message, $version ) ) {
    		if ( function_exists( '__' ) ) {
    			if ( $version ) {
    				/* translators: %s: Version number. */
    				$version = sprintf( __( '(This message was added in version %s.)' ), $version );
    			}
    
    			$message .= ' ' . sprintf(
    				/* translators: %s: Documentation URL. */
    				__( 'Please see <a href="%s">Debugging in WordPress</a> for more information.' ),
    				__( 'https://wordpress.org/support/article/debugging-in-wordpress/' )
    			);
    
    			trigger_error(
    				sprintf(
    					/* translators: Developer debugging message. 1: PHP function name, 2: Explanatory message, 3: WordPress version number. */
    					__( '%1$s was called <strong>incorrectly</strong>. %2$s %3$s' ),
    					$function,
    					$message,
    					$version
    				),
    				E_USER_NOTICE
    			);
    		} else {
    			if ( $version ) {
    				$version = sprintf( '(This message was added in version %s.)', $version );
    			}
    
    			$message .= sprintf(
    				' Please see <a href="%s">Debugging in WordPress</a> for more information.',
    				'https://wordpress.org/support/article/debugging-in-wordpress/'
    			);
    
    			trigger_error(
    				sprintf(
    					'%1$s was called <strong>incorrectly</strong>. %2$s %3$s',
    					$function,
    					$message,
    					$version
    				),
    				E_USER_NOTICE
    			);
    		}
    	}
    }
  • Re: PHP Notice: Id richiamato in maniera scorretta

    omega726 ha scritto:


    Ciao Cali,

    grazie per il benvenuto e grazie per l'interessamento!!

    Anch'io mi aspettavo di trovare un id da cambiare in get_id ma così non è...

    In merito alla tua richiesta, nei file del mio tema non c'è nessun .php con quel nome... anche facendo una ricerca estesa a tutto il public HTML non restituisce nulla...

    L'unica cosa vagamente simile che sta dentro al file del tema è questo quantity-input.php e contiene questo codice:
    <?php
    /**
     * Product quantity inputs
     *
     * This template can be overridden by copying it to yourtheme/woocommerce/global/quantity-input.php.
     *
     * HOWEVER, on occasion WooCommerce will need to update template files and you (the theme developer).
     * will need to copy the new files to your theme to maintain compatibility. We try to do this.
     * as little as possible, but it does happen. When this occurs the version of the template file will.
     * be bumped and the readme will list any important changes.
     *
     * @see 	    http://docs.woothemes.com/document/template-structure/
     * @author 		WooThemes
     * @package 	WooCommerce/Templates
     * @version     2.5.0
     */
    
    if ( ! defined( 'ABSPATH' ) ) {
    	exit; // Exit if accessed directly
    }
    
    ?>
    <div class="quantity">
    	<div class="desc-qty button-qty"><span style="display: none;"><i class="fa fa-angle-up"></i></span></div><?php
    	?><input type="number" step="<?php echo esc_attr( $step ); ?>" min="<?php echo esc_attr( $min_value ); ?>" max="<?php echo esc_attr( $max_value ); ?>" name="<?php echo esc_attr( $input_name ); ?>" value="<?php echo esc_attr( $input_value ); ?>" title="<?php echo esc_attr_x( 'Qty', 'Product quantity input tooltip', 'woocommerce' ) ?>" class="input-text qty text" size="4" /><?php
        ?><div class="inc-qty button-qty"><span style="display: none;"><i class="fa fa-angle-down"></i></span></div>
    </div>
    Quì... Non trovo id... O mi sono cercato o non c'è...
  • Re: PHP Notice: Id richiamato in maniera scorretta

    cali ha scritto:


    O posti i codici dei file che ti dice o li apri e cerchi questo famoso id.

    C'è da perderci tempo....
    Si hai ragionissima, sono arrivato qui perchè ci ho già speso ore e non riesco a trovare nulla....
    Poi sono alle prime armi sull'argomento e quindi non sono proprio un fulmine...
    Domanda sciocca, leggendo il notice, secondo te qual'è esattamente il file da cui viene generato l'errore?

    Perchè da dilettante in materia già la lettura del notice mi ha creato parecchia confusione...
  • Re: PHP Notice: Id richiamato in maniera scorretta

    Domani comunque mi ricontrollo uno a uno tutti i file citati nel NOTICE e provo a cercare qualche cosa... devo risolverla perchè lo scorso weekend mi ha generato 300mb di log con lo stesso errore in 48 ore...
    E poi adesso è una questione di principio!
  • Re: PHP Notice: Id richiamato in maniera scorretta

    omega726 ha scritto:


    Prima cosa che ho controllato... senza ricavare nulla, te la riporto in ogni caso (dalla 5281 alla 5336) la 5313 è quella con scritto semplicemente E_USER_NOTICE, il secondo dal basso:
    	/**
    	 * Filters whether to trigger an error for _doing_it_wrong() calls.
    	 *
    	 * @since 3.1.0
    	 * @since 5.1.0 Added the $function, $message and $version parameters.
    	 *
    	 * @param bool   $trigger  Whether to trigger the error for _doing_it_wrong() calls. Default true.
    	 * @param string $function The function that was called.
    	 * @param string $message  A message explaining what has been done incorrectly.
    	 * @param string $version  The version of WordPress where the message was added.
    	 */
    	if ( WP_DEBUG && apply_filters( 'doing_it_wrong_trigger_error', true, $function, $message, $version ) ) {
    		if ( function_exists( '__' ) ) {
    			if ( $version ) {
    				/* translators: %s: Version number. */
    				$version = sprintf( __( '(This message was added in version %s.)' ), $version );
    			}
    
    			$message .= ' ' . sprintf(
    				/* translators: %s: Documentation URL. */
    				__( 'Please see <a href="%s">Debugging in WordPress</a> for more information.' ),
    				__( 'https://wordpress.org/support/article/debugging-in-wordpress/' )
    			);
    
    			trigger_error(
    				sprintf(
    					/* translators: Developer debugging message. 1: PHP function name, 2: Explanatory message, 3: WordPress version number. */
    					__( '%1$s was called <strong>incorrectly</strong>. %2$s %3$s' ),
    					$function,
    					$message,
    					$version
    				),
    				E_USER_NOTICE
    			);
    		} else {
    			if ( $version ) {
    				$version = sprintf( '(This message was added in version %s.)', $version );
    			}
    
    			$message .= sprintf(
    				' Please see <a href="%s">Debugging in WordPress</a> for more information.',
    				'https://wordpress.org/support/article/debugging-in-wordpress/'
    			);
    
    			trigger_error(
    				sprintf(
    					'%1$s was called <strong>incorrectly</strong>. %2$s %3$s',
    					$function,
    					$message,
    					$version
    				),
    				E_USER_NOTICE
    			);
    		}
    	}
    }
    E non c'è...

    Intanto controlla la sequenza di file che ti dice nella notice.

    Puoi utilizzare notepad++ oppure un ide come netbeans o altri...
  • Re: PHP Notice: Id richiamato in maniera scorretta

    omega726 ha scritto:


    cali ha scritto:


    O posti i codici dei file che ti dice o li apri e cerchi questo famoso id.

    C'è da perderci tempo....
    Si hai ragionissima, sono arrivato qui perchè ci ho già speso ore e non riesco a trovare nulla....
    Poi sono alle prime armi sull'argomento e quindi non sono proprio un fulmine...
    Domanda sciocca, leggendo il notice, secondo te qual'è esattamente il file da cui viene generato l'errore?

    Perchè da dilettante in materia già la lettura del notice mi ha creato parecchia confusione...
    Fa una serie di richiami e inclusioni può essere che sta nella prima e apposto oppure la prima e la terza... C'è solo da vedere.

    Tutto quà... Con pazienza...
  • Re: PHP Notice: Id richiamato in maniera scorretta

    omega726 ha scritto:


    Domani comunque mi ricontrollo uno a uno tutti i file citati nel NOTICE e provo a cercare qualche cosa... devo risolverla perchè lo scorso weekend mi ha generato 300mb di log con lo stesso errore in 48 ore...
    E poi adesso è una questione di principio!
    300mb tanto... Stavo pensando che potresti disabilitare le notice e i warnings dal file di configurazione di php o direttamente da php dando il comando.

    Però è meglio trovare il problema... Almeno provarci!
Devi accedere o registrarti per scrivere nel forum
19 risposte