WooCommerce create new product and add to cart on form submit

I am customizing woo-commerce plugin to add product from the front end into the cart. I have written the function in functions.php, but i am getting a Fatal error.

Getting this error–>

Read More

Fatal error: Call to a member function add_to_cart() on a non-object
in
C:wampwwwcutting-edge_serverwordpress_themewp-contentthemescutting_ageresponsivefunctions.php
on line 56

Any body have any idea how to resolve it?

My function.php file

if (isset($_POST["addcustomcarts"]))
        {
       echo $_SERVER[QUERY_STRING];
      // echo $_SERVER[REQUEST_URI];
        echo "i am in if";
        //exit();
    add_filter('woocommerce_before_cart', 'customcart');

    function customcart() { 
       echo "i am in function";

    //global $woocommerce;

    $my_post = array(
      'post_title'    => 'My post',
      'post_content'  => 'This is my post.',
      'post_status'   => 'publish',
      'post_author'   => 1,
      'post_type'     =>'product'

    );


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

     add_post_meta($product_ID, '_regular_price', 100, $unique);
     add_post_meta($product_ID, '_price', 100, $unique);
      add_post_meta($product_ID, '_stock_status', 'instock', $unique);


      //Getting error on this line.
      $woocommerce->cart->add_to_cart( $product_ID, $quantity=1 );




     exit( wp_redirect( home_url( "cart" ) ) );
    }

    customcart();
      }

My html file

<form name="addpro" method="post" action="">
    <input type="submit" name="addcustomcarts" value="ADD TOO CART" />
  </form> 

Related posts

3 comments

  1. I’m not sure exactly what you are doing, but the following code did work for me in that it created a new product and added it to the cart. Note, I had to use $_GET to test on my setup since I don’t have the rest of your code and didn’t feel like creating a form.

    EDIT: I’ve added a simple <form> element and switched to $_POST.
    EDIT 2: I’ve removed the form. Apparently the OP has the form on the front page.

    add_action('init', 'customcart');
    
    function customcart() {
    
      if (isset($_POST["addcustomcarts"])) {
    
        global $woocommerce;
    
        $my_post = array(
          'post_title'    => 'My post',
          'post_content'  => 'This is my post.',
          'post_status'   => 'publish',
          'post_author'   => 1,
          'post_type'     =>'product'
        );
    
        // Insert the post into the database
        $product_ID = wp_insert_post( $my_post );
    
        if ( $product_ID ){
          add_post_meta($product_ID, '_regular_price', 100 );
          add_post_meta($product_ID, '_price', 100 );
          add_post_meta($product_ID, '_stock_status', 'instock' );
    
          //Getting error on this line.
          $woocommerce->cart->add_to_cart( $product_ID, $quantity=1 );
    
          exit( wp_redirect( get_permalink( woocommerce_get_page_id( 'cart' ) ) ) );
    
        }
    
      }
    
    }
    
  2. The $woocommerce->cart apparently is not an object during the call. Set it to get checked before the line that gives the error:

        if( $woocommerce->cart )
          $woocommerce->cart->add_to_cart( $product_ID, $quantity=1 );
    

    This will make sure the cart is even there and won’t execute the line if it’s not.

  3. add_action( 'template_redirect', 'add_to_cart_on_custom_page_and_redirect');
     
    function add_to_cart_on_custom_page_and_redirect(){
     
        if( is_page( 'my-page' ) ) { // you can also pass a page ID instead of a slug
     
            WC()->cart->add_to_cart( 72 ); // add to cart product with ID 72
            wp_safe_redirect( wc_get_checkout_url() );
            exit();
     
        }
     
    }
    

Comments are closed.