WooCommerce создайте новый товар и добавьте в корзину в форме отправки


Я настраиваю плагин woo-commerce, чтобы добавить товар с переднего плана в корзину. Я написал функцию в functions.php , но я получаю Фатальную ошибку.

Получение этой ошибки -->

Неустранимая ошибка: Вызов функции-члена add_to_cart() для не-объекта в
C:\wamp\www\cutting-edge_server\wordpress_theme\wp-content\themes\cutting_age\responsive\functions.php в строке 56

У любого органа есть какие-либо идеи о том, как решить эту проблему?

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

Мой html-файл

<form name="addpro" method="post" action="">
    <input type="submit" name="addcustomcarts" value="ADD TOO CART" />
  </form> 
Author: Jack Johansson, 2013-10-25

2 answers

Я не совсем уверен, что вы делаете, но следующий код сработал для меня в том смысле, что он создал новый товар и добавил его в корзину. Обратите внимание, что мне пришлось использовать $_GET для тестирования своей настройки, так как у меня нет остальной части вашего кода и мне не хотелось создавать форму.

РЕДАКТИРОВАТЬ: Я добавил простой элемент <form> и переключился на $_POST. ПРАВКА 2: Я удалил форму. Очевидно, у ОП есть форма на первой странице.

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

    }

  }

}
 4
Author: helgatheviking, 2013-10-25 16:58:27

Корзина $woocommerce->, по-видимому, не является объектом во время вызова. Установите его так, чтобы он проверялся перед строкой, которая выдает ошибку:

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

Это позволит убедиться, что корзина даже там, и не будет выполнять строку, если ее нет.

 0
Author: Svetlana Silina, 2013-10-25 12:56:05