WooCommerce crear un nuevo producto y agregar al carrito en el formulario enviado

2

Estoy personalizando el complemento de woo-commerce para agregar productos desde la parte delantera al carrito. He escrito la función en functions.php, pero recibo un error Fatal.

Obteniendo este error - >

  

Error grave: llamada a una función miembro add_to_cart () en un no objeto   en
  C: \ wamp \ www \ cutting-edge_server \ wordpress_theme \ wp-content \ themes \ cutting_age \ responsive \ functions.php   en línea 56

¿Cualquier cuerpo tiene alguna idea de cómo resolverlo?

Mi archivo function.php

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();
      }

Mi archivo html

<form name="addpro" method="post" action="">
    <input type="submit" name="addcustomcarts" value="ADD TOO CART" />
  </form> 
    
pregunta Sanjay Nakate 25.10.2013 - 13:25

2 respuestas

4

No estoy seguro de lo que está haciendo exactamente, pero el siguiente código me funcionó porque creó un nuevo producto y lo agregó al carrito. Tenga en cuenta que tuve que usar $_GET para probar mi configuración ya que no tengo el resto de su código y no tenía ganas de crear un formulario.

EDIT : agregué un elemento simple <form> y cambié a $_POST . EDIT 2 : he eliminado el formulario. Al parecer, el OP tiene el formulario en la página principal.

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

    }

  }

}
    
respondido por el helgatheviking 25.10.2013 - 16:42
0

Aparentemente, el carrito $ woocommerce- > no es un objeto durante la llamada. Configúrelo para que se compruebe antes de la línea que da el error:

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

Esto asegurará que el carro esté incluso allí y no ejecutará la línea si no lo está.

    
respondido por el Svetlana Silina 25.10.2013 - 14:56

Lea otras preguntas en las etiquetas