2

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> 
  • What happens if you uncomment //global $woocommerce;? – fuxia 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
    1. I already did provide a suggestion on your original question in SO where you asked the exact same thing. 2. I voted to close your question as I already told you in SO that it would be off topic here. 3. You're hijacking someone else's question for your personal gain. – helgatheviking Nov 17 '15 at 12:36
4

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

    }

  }

}
  • 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
0

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.

  • 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

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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