フロントエンドからカートに商品を追加するために、Wooコマースプラグインをカスタマイズしています。私はfunctions.phpで関数を書きました、しかし、私は致命的なエラーを得ています。
このエラーを取得する - >
致命的なエラー:内の非オブジェクトに対してメンバ関数add_to_cart()を呼び出します
行56のC:¥wamp¥www¥cutting-Edge_server¥wordpress_theme¥wp-content¥themes¥cutting_age¥response¥functions.php
どのようにそれを解決するためのアイデアがありますか?
私の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>
私はあなたが何をしているのか正確にはわかりませんが、次のコードは新しい製品を作成してカートに追加したという点で私にとって役に立ちました。私はあなたのコードの残りを持っていないし、フォームを作成したくないので、私は私の設定をテストするために$_GET
を使わなければならなかったことに注意してください。
_ edit _ :単純な<form>
要素を追加し、$_POST
に切り替えました。 編集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-> cartは明らかに通話中のオブジェクトではありません。エラーが発生した行の前にチェックを入れるように設定します。
if( $woocommerce->cart )
$woocommerce->cart->add_to_cart( $product_ID, $quantity=1 );
これはカートがそこにあることを確実にし、そうでなければその行を実行しません。