Intereting Posts
Субдомены с почти одинаковым контентом Кэш баз данных и разница в кеше объектов? Как изменить структуру URL-адресов вложений по умолчанию? Добавить последнее измененное время как версия в css и js get_the_excerpt () не работает в плагине Запросить сообщения из категории на основе наиболее предпочтительного фильтра Связь с типами сообщений из wp-admin Почтовые заголовки, не позволяющие мне использовать 2 последовательных тире в постоянной ссылке Добавьте свою собственную страницу настроек для плагина FitVid не работает для iframes для конкретной темы установки получить значение параметра на странице «внешний» Показывать только настраиваемое поле Дополнительные пользовательские поля для определенного шаблона показать последние записи в блоге авторов 403 Запрещенная загрузка логотипа сайта Рекомендации по доступу к текущим пользовательским данным в WordPress

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

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

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

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

У любого органа есть идея, как его решить?

Мой файл functions.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> 

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

EDIT : я добавил простой элемент <form> и переключился на $_POST . EDIT 2 : я удалил форму. По-видимому, OP имеет форму на первой странице.

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

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

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

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

Привет, @helgatheviking,

возможно ли это, чтобы он работал с типом пользовательской почты типа

 $my_post = array( 'post_title' => 'My post', 'post_content' => 'This is my post.', 'post_status' => 'publish', 'post_author' => 1, 'post_type' =>'custom-post' ); // 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 ); 

Просто хотел знать, будет ли этот код работать без создания новой публикации в WooCommerce, можем ли мы опубликовать что-то вроде выше в корзине WooCommerce и проверить там?

Любая помощь будет отличной.