Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

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-->

Fatal error: Call to a member function add_to_cart() on a non-object in
C:\wamp\www\cutting-edge_server\wordpress_theme\wp-content\themes\cutting_age\responsive\functions.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> 
share|improve this question
    
What happens if you uncomment //global $woocommerce;? –  toscho Oct 25 '13 at 12:10
    
getting same error.. @toscho –  Sanjay Nakate Oct 25 '13 at 12:12
    
you have any idea????@toscho –  Sanjay Nakate Oct 25 '13 at 12:21

2 Answers 2

up vote 1 down vote accepted

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

    }

  }

}
share|improve this answer
    
i have a form with on submit button and form method is post –  Sanjay Nakate Oct 25 '13 at 14:51
    
your code is not working i used post instead of get –  Sanjay Nakate Oct 25 '13 at 15:05
    
Are you sure your form set to post? Because, I've switched to $_POST and once I click 'Submit' the post is inserted and added to the cart. –  helgatheviking Oct 25 '13 at 15:16
    
see this my form <form name="addpro" method="post" action=""> <input type="submit" name="addcustomcarts" value="ADD TOO CART" /> </form> –  Sanjay Nakate Oct 25 '13 at 15:19
    
can you share your code what exactly you made the changes in function.php –  Sanjay Nakate Oct 25 '13 at 15:22

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.

share|improve this answer
    
its work but when redirect through exit( wp_redirect( home_url( "cart"))); its saying that your cart is empty –  Sanjay Nakate Oct 25 '13 at 13:04
    
it works but when i redirect to the cart page its showing that your cart is empty –  Sanjay Nakate Oct 25 '13 at 13:08

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.