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> 
4
  • What happens if you uncomment //global $woocommerce;?
    – fuxia
    Oct 25 '13 at 12:10
  • getting same error.. @toscho Oct 25 '13 at 12:12
  • you have any idea????@toscho 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. 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' ) ) ) );

    }

  }

}
14
  • i have a form with on submit button and form method is post Oct 25 '13 at 14:51
  • your code is not working i used post instead of get 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. 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> Oct 25 '13 at 15:19
  • can you share your code what exactly you made the changes in function.php 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.

2
  • its work but when redirect through exit( wp_redirect( home_url( "cart"))); its saying that your cart is empty Oct 25 '13 at 13:04
  • it works but when i redirect to the cart page its showing that your cart is empty Oct 25 '13 at 13:08
0
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();
 
    }
 
}

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.