自定义Woocommerce添加到购物车不在Firefox中,但在Chrome中

I have an issue where I have a custom function that creates a custom product, and then add it to the cart afterwards.

The big issue is that it works, perfectly in Chrome, but not in Firefox and Safari? Anybody having an idea why it works only in Chrome?

My funciton in functions.php

add_action('wp_loaded', 'customcart');

function customcart() {

  if (isset($_POST["addcustomcarts"])) {

    global $woocommerce;      

    $my_post = array(
      'post_title'    => 'Design selv skilt',
      'post_content'  => '<div class="col-md-12">Dette er et design selv skilt, tjek egenskaber på produktet for at se hvad kunden har bestilt.</div>',
      'post_status'   => 'publish',
      'post_author'   => 1,
      'post_type'     => 'product'
    );

    // Insert the post into the database
    $product_ID = wp_insert_post( $my_post );

    $filteredData=substr($_POST['img_val'], strpos($_POST['img_val'], ",")+1);

    //Decode the string
    $unencodedData=base64_decode($filteredData);

    //Save the image
    file_put_contents('img' . $product_ID . '.png', $unencodedData);

    if ( $product_ID ){
      wp_set_object_terms( $product_ID, 'design-selv-skilte', 'product_cat' );
      add_post_meta($product_ID, '_regular_price', $_POST["priceInput"] );
      add_post_meta($product_ID, '_price', $_POST["priceInput"] );
      add_post_meta($product_ID, '_stock_status', 'instock' );
      //add_post_meta($product_ID, '_manage_stock', 'yes' );    
      //add_post_meta($product_ID, '_stock', '10' ); 
      add_post_meta($product_ID, '_sku', 'designselvskilt-' . $product_ID );   
      add_post_meta($product_ID, '_visibility', 'hidden' );
      add_post_meta($product_ID, 'tekst-paa-linje-1', $_POST["textInput"] );
      add_post_meta($product_ID, 'tekst-paa-linje-2', $_POST["text2Input"] );
      add_post_meta($product_ID, 'stoerrelse', $_POST["størrelseInput"] );
      add_post_meta($product_ID, 'form', $_POST["formInput"] );
      add_post_meta($product_ID, 'farve', $_POST["farveInput"] );
      add_post_meta($product_ID, 'type-skilt', $_POST["typeInput"] );
      add_post_meta($product_ID, 'fastgoering', $_POST["fastgøringInput"] );
      add_post_meta($product_ID, 'font', $_POST["fontInput"] );
      add_post_meta($product_ID, 'linje-1-font-size', $_POST["fontSizeLine1Input"] );
      add_post_meta($product_ID, 'linje-2-font-size', $_POST["fontSizeLine2Input"] );
      add_post_meta($product_ID, 'product_image_gallery', $_POST["img_val"]);
      add_post_meta($product_ID, 'product_image_url', 'img' . $product_ID . '.png');  
      require_once(ABSPATH . 'wp-admin/includes/media.php');
      require_once(ABSPATH . 'wp-admin/includes/file.php');
      require_once(ABSPATH . 'wp-admin/includes/image.php');
      $home = home_url();
      $url = $home . '/img' . $product_ID . '.png';
      $post_id = $product_ID;
      $desc = $_POST["textInput"];
      $image = media_sideload_image($url, $post_id, $desc, src );

              function getImageId( $image ) {
            // Split the $url into two parts with the wp-content directory as the separator
            $parsed_url  = explode( parse_url( WP_CONTENT_URL, PHP_URL_PATH ), $image );

            // Get the host of the current site and the host of the $url, ignoring www
            $this_host = str_ireplace( 'www.', '', parse_url( home_url(), PHP_URL_HOST ) );
            $file_host = str_ireplace( 'www.', '', parse_url( $image, PHP_URL_HOST ) );

            // Return nothing if there aren't any $url parts or if the current host and $url host do not match
            if ( ! isset( $parsed_url[1] ) || empty( $parsed_url[1] ) || ( $this_host != $file_host ) ) {
                return;
            }

            // Now we're going to quickly search the DB for any attachment GUID with a partial path match
            // Example: /uploads/2013/05/test-image.jpg
            global $wpdb;

            $attachment = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM {$wpdb->prefix}posts WHERE guid RLIKE %s;", $parsed_url[1] ) );

            // Returns null if no attachment is found
            return $attachment[0];
        }    

    set_post_thumbnail($post_id, getImageId( $image ));    
    $woocommerce->cart->get_cart_from_session();
    $woocommerce->cart->add_to_cart($product_ID);

    wp_redirect( '/kurv' ); exit;

    }
  }

}

I ran into something similar, except it worked in Chrome/Safari and not Firefox/Opera. It turned out that somebody had changed the status of the product from published to pending. After the change all tested browsers worked just fine. The weird thing is why that happened at all since it should be all server side scripting controlling the add to cart process from a link.