搜尋

首頁  >  問答  >  主體

如何修復 PHP 警告:懸停時 WooCommerce 類別圖像切換程式碼中未定義的陣列鍵

<p>我的子主題functions.php 檔案中有此程式碼:</p> <pre class="brush:php;toolbar:false;">// add hover image to woo category page add_action( 'woocommerce_before_shop_loop_item_title', 'mem_add_on_hover_shop_loop_image' ) ; function 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' ) ; } else { //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>它可以工作,並且可以在懸停時切換類別圖像。 </p> <p>問題是顯示與此行相關的 PHP 錯誤:</p><p> $image_id = wc_get_product()->get_gallery_image_ids()[0] ;</p> <p>錯誤是 PHP 警告:未定義的陣列鍵 0</p> <p>請問我該如何解決這個問題? </p> <p>謝謝 塔姆辛</p> <p>我還沒試過修復。 </p>
P粉529581199P粉529581199445 天前507

全部回覆(1)我來回復

  • 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');
        }
    }
    

    回覆
    0
  • 取消回覆