Je suis en train de personnaliser le plug-in woo-commerce pour ajouter des produits de l’avant au panier. J'ai écrit la fonction dans functions.php, mais j'obtiens une erreur fatale.
Obtenir cette erreur ->
Erreur fatale: appel de la fonction membre add_to_cart () sur un non-objet dans
C:\wamp\www\cutting-Edge_server\wordpress_theme\wp-content\themes\cutting_age\responsive\functions.php à la ligne 56
Tout organisme a-t-il une idée de la façon de le résoudre?
Mon fichier 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();
}
Mon fichier html
<form name="addpro" method="post" action="">
<input type="submit" name="addcustomcarts" value="ADD TOO CART" />
</form>
Je ne sais pas exactement ce que vous faites, mais le code suivant a fonctionné pour moi dans la mesure où il a créé un nouveau produit et l'a ajouté au panier. Notez que j'ai dû utiliser $_GET
pour tester ma configuration car je n'ai pas le reste de votre code et je n'avais pas envie de créer un formulaire.
EDIT: J'ai ajouté un élément <form>
simple et suis passé à $_POST
. EDIT 2 : J'ai supprimé le formulaire. Apparemment, l'OP a le formulaire sur la page de couverture.
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' ) ) ) );
}
}
}
Le panier $ woocommerce-> n'est apparemment pas un objet lors de l'appel. Configurez-le pour qu'il soit vérifié avant la ligne qui donne l'erreur:
if( $woocommerce->cart )
$woocommerce->cart->add_to_cart( $product_ID, $quantity=1 );
Cela garantira que le panier est là et n'exécutera pas la ligne si ce n'est pas le cas.