Leute! Ich stand wieder vor einem Problem. Für ein Projekt auf WooCommerce habe ich die benutzerdefinierten Systemfavoritenprodukte erstellt. Der Standardwert hat uns nicht gepasst. Ich konnte den durch diesen Code erstellten Zusatz implementieren:
Schaltfläche zum Hinzufügen zur Favoritenliste
<span data-post-id="<?php the_ID(); ?>" data-user-id="<?php echo $current_user->ID; ?>" class="product__favorite product_favor"></span>
Der jQuery-Code
jQuery('.product_favor').on('click',function(e){
var postID = jQuery(this).attr("data-post-id");
var userID = jQuery(this).attr("data-user-id");
data = {
'action': 'dicaprio_add_fav_product',
'postID': postID,
'userID': userID
}
jQuery.ajax({
type:'post',
url: object_url.url,
data: data,
cache: false,
success: function(data) {
}
});
e.preventDefault();
});
Der Code in Funktion:
add_action( 'wp_ajax_nopriv_dicaprio_add_fav_product', 'dicaprio_add_fav_product' );
add_action( 'wp_ajax_dicaprio_add_fav_product', 'dicaprio_add_fav_product' );
function dicaprio_add_fav_product() {
$postID = $_POST['postID'];
$userID = $_POST['userID'];
$current_fav_list = get_user_meta( $userID, 'favorite_list_product', true );
if ( is_array( $current_fav_list ) ) {
if ( in_array( $postID, $current_fav_list ) ) {
} else {
$current_fav_list[] = $postID;
}
} else {
$current_fav_list = array();
$current_fav_list[] = $postID;
}
update_usermeta( $userID, 'favorite_list_product', $current_fav_list );
}
Aber ich habe nicht über das Entfernungssystem nachgedacht. Nein, ich dachte, ich könnte alles andersherum machen. Aber es funktioniert nicht. So habe ich beschlossen, das Entfernen eines Artikels aus den Favoriten zu organisieren.
Schaltfläche „Löschen“.
<?php if(is_page_template('page-favorite.php') ): ?>
<div style="display: none" class="remove_product" data-post-id="<?php the_ID(); ?>" data-user-id="<?php echo $current_user->ID; ?>" class="remove_from_favorite">Remove</div>
<?php endif; ?>
Der jQuery-Code für remove
jQuery('.remove_product').on('click',function(e){
var postID = jQuery(this).attr("data-post-id");
var userID = jQuery(this).attr("data-user-id");
alert(postID)
data = {
'action': 'dicaprio_remove_fav_prod',
'postID': postID,
'userID': userID
}
jQuery.ajax({
type:'post',
url: object_url.url,
data: data,
cache: false,
success: function(data) {
}
});
e.preventDefault();
});
Und den zu entfernenden Funktionscode
add_action( 'wp_ajax_nopriv_dicaprio_add_fav_prod', 'dicaprio_remove_fav_prod' );
add_action( 'wp_ajax_dicaprio_add_fav_prod', 'dicaprio_remove_fav_prod' );
function dicaprio_remove_fav_prod() {
$postID = $_POST['postID'];
$userID = $_POST['userID'];
$current_fav_list = get_user_meta( $userID, 'favorite_list_product', true );
if ( is_array( $current_fav_list ) ) {
if ( in_array( $postID, $current_fav_list ) ) {
} else {
$current_fav_list[] = $postID;
}
} else {
$current_fav_list = array();
$current_fav_list[] = $postID;
}
update_usermeta( $userID, 'favorite_list_product', $current_fav_list );
}
Aber löschen geht nicht. Wenn ich auf die Schaltfläche „Löschen“ klicke, gibt Ajax einen 400-Fehler zurück. Hier ist ein Screenshot:
Ich habe es versucht, konnte aber nicht herausfinden, was los war. Und ich vermute, dass der Entfernungscode Fehler enthält, aber ich sehe sie einfach nicht. Bitte helfen Sie mir, dieses Problem zu lösen.