suchen

Heim  >  Fragen und Antworten  >  Hauptteil

So beheben Sie die PHP-Warnung: Undefinierter Array-Schlüssel im WooCommerce-Kategorie-Bildwechselcode beim Hover

<p>Ich habe diesen Code in der Datei „functions.php“ meines untergeordneten Themes: </p> <pre class="brush:php;toolbar:false;">// Hover-Bild zur Woo-Kategorieseite hinzufügen add_action( 'woocommerce_before_shop_loop_item_title', 'mem_add_on_hover_shop_loop_image' ); Funktion mem_add_on_hover_shop_loop_image() { $image_id = wc_get_product()->get_gallery_image_ids()[0]; if ( $image_id ) { echo wp_get_attachment_image( $image_id, 'woocommerce_thumbnail' ); } anders { //echo wp_get_attachment_image( wc_get_product()->get_image_id() ); echo wp_get_attachment_image( wc_get_product()->get_image_id(), 'woocommerce_thumbnail' ); } }</pre> <p>Es funktioniert und wechselt die Kategoriebilder beim Schweben. </p> <p>Das Problem besteht darin, dass ein PHP-Fehler im Zusammenhang mit dieser Zeile angezeigt wird: </p><p> $image_id = wc_get_product()->get_gallery_image_ids()[0] ;</p> <p>Der Fehler ist PHP-Warnung: undefinierter Array-Schlüssel 0</p> <p>Wie kann ich dieses Problem lösen? </p> <p>Vielen Dank Tamsin</p> <p>Ich habe die Lösung noch nicht ausprobiert. </p>
P粉529581199P粉529581199444 Tage vor505

Antworte allen(1)Ich werde antworten

  • P粉011684326

    P粉0116843262023-08-27 18:00:39

    您可以首先检查get_gallery_image_ids是否返回一个数组。如果存在,则检查键 0(第一个元素)是否存在。如果是这样,那么您就可以随意使用它。

    ...
    
    // Get all IDs
    $idList = wc_get_product()->get_gallery_image_ids(); 
    
    // Check if the IDs are an array and key 0 (first element) exists
    if (is_array($idList) && array_key_exists(0, $idList)) {
        // Get the first element
        $image_id = $idList[0];
    
        echo wp_get_attachment_image($image_id, 'woocommerce_thumbnail' ) ; 
    } else { 
        echo wp_get_attachment_image(wc_get_product()->get_image_id(), 'woocommerce_thumbnail' ) ; 
    }
    

    编辑,

    您应该使用此代码编辑您的 mem_add_on_hover_shop_loop_image 函数。最终代码应如下所示,

    add_action('woocommerce_before_shop_loop_item_title', 'mem_add_on_hover_shop_loop_image');
    function mem_add_on_hover_shop_loop_image()
    {
        // Get all IDs
        $idList = wc_get_product()->get_gallery_image_ids();
    
        // Check if the IDs are an array and key 0 (first element) exists
        if (is_array($idList) && array_key_exists(0, $idList)) {
            // Get the first element
            $image_id = $idList[0];
    
            echo wp_get_attachment_image($image_id, 'woocommerce_thumbnail');
        } else {
            echo wp_get_attachment_image(wc_get_product()->get_image_id(), 'woocommerce_thumbnail');
        }
    }
    

    Antwort
    0
  • StornierenAntwort