WooCommerce Warenkorb Validierung: vermeiden Sie in den Warenkorb legen
hey Leute ich habe ein probleme mit woocommerce, dass im, der versucht zu reparieren, für ein paar Tage.
im erstellen einer Webseite für einen Kerl und er wollte mich zu fügen Sie eine benutzerdefinierte Eingabe auf der Produkt-Seite, ich konnte es selbst zu tun so habe ich ein freelancer online.
auf der Produkt-Seite habe ich
add-to-cart-Taste, Menge input und Datum eingegeben.
"Datum Eingang" ist der freelancer haben.
die Sache ist, dass wenn die $_REQUEST['thedate'] leer ist, ist das benutzerdefinierte Fehler-popup, aber das Produkt noch in den Warenkorb gelegt.
dem code:(functions.php)
function add_the_date_validation() {
if ( empty( $_REQUEST['thedate'] )) {
wc_add_notice( __( 'Please enter a date.', 'woocommerce' ), 'error' );
return false;
}
return true;
}
add_action( 'woocommerce_add_to_cart_validation', 'add_the_date_validation', 10, 5 );
dem Stadtplan:
http://i.stack.imgur.com/a75P6.png
- Wie kann ich verhindern, dass das Produkt zur Beurteilung itslef in den Warenkorb gelegt?
anderen codes die freelancer haben:
function save_add_the_date_field( $cart_item_key, $product_id = null, $quantity= null, $variation_id= null, $variation= null ) {
if( isset( $_REQUEST['thedate'] ) ) {
WC()->session->set( $cart_item_key.'_the_date', $_REQUEST['thedate'] );
}
}
add_action( 'woocommerce_add_to_cart', 'save_add_the_date_field', 1, 5 );
function render_meta_on_checkout_order_review_item( $quantity = null, $cart_item = null, $cart_item_key = null ) {
if( $cart_item_key && WC()->session->__isset( $cart_item_key.'_the_date' ) ) {
echo $quantity. '<dl class="">
<dt class="">Date: </dt>
<dd class=""><p>'. WC()->session->get( $cart_item_key.'_the_date') .'</p></dd>
</dl>';
}
}
add_filter( 'woocommerce_checkout_cart_item_quantity', 'render_meta_on_checkout_order_review_item', 1, 3 );
function the_date_order_meta_handler( $item_id, $values, $cart_item_key ) {
if( WC()->session->__isset( $cart_item_key.'_the_date' ) ) {
wc_add_order_item_meta( $item_id, "the_date", WC()->session->get( $cart_item_key.'_the_date') );
}
}
add_action( 'woocommerce_add_order_item_meta', 'the_date_order_meta_handler', 1, 3 );
function the_date_force_individual_cart_items($cart_item_data, $product_id)
{
$unique_cart_item_key = md5( microtime().rand() );
$cart_item_data['unique_key'] = $unique_cart_item_key;
return $cart_item_data;
}
add_filter( 'woocommerce_add_cart_item_data','the_date_force_individual_cart_items', 10, 2 );
InformationsquelleAutor Eyal Avitan | 2015-06-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hätte ich gesagt, dass Sie verwenden sollten,Produkt-Add-Ons, aber es scheint nicht zu haben, ein Datum-picker. Wie auch immer, ich würde versuchen, Sie ändern Ihre überprüfung-Funktion wie folgt:
Anstatt
TRUE
Sie zurückgeben möchten der aktuelle status der$passed
variable. Ich kann nicht Versprechen dass es funktionieren wird, denn ich bin kein gehen, um den rest der code, der benötigt wird, um es zu testen, aber dies ist ähnlich zu dem, was ich viele Male getan haben.Auf einer anderen Anmerkung, es sei denn, du meinst, gelten diese überprüfung zu jedem Produkt in Ihrem Shop, müssen Sie beschränken Sie diese Funktion mit einigen zusätzlichen bedingte Logik.
add_filter
nichtadd_action
InformationsquelleAutor helgatheviking
Ich hatte dieses Thema und nach viel Versuch und Irrtum das Update war zum anpassen der $priority-parameter (10 ist Standard), in :
Wie gewohnt, versuchte ich alles andere zuerst...wurde das geändert, um 15 und bingo..! Ich denke, es lief vor code auf Rang niedriger Priorität, dann lassen Sie Artikel in den Warenkorb.
InformationsquelleAutor Branksy
Ja, sorry, ich bin neu in diesem forum.
Allerdings habe ich eine Lösung gefunden habe, habe ich direkt Bearbeiten class-wc-cart.php in Zeile 900, und ich haben, kopieren Sie die Funktion vor, wenn:
Nun für mich funktioniert es, ich weiß, dass das nicht die richtige Lösung, aber für den moment funktioniert es, ich habe nur vorsichtig sein, wenn ich update woocommerce
InformationsquelleAutor Safuan Dinar