Fehler beim Entfernen eines Produkts aus den Favoriten (ich habe das Wunschlistensystem selbst erstellt)

Lesezeit: 3 Minuten

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:

Geben Sie hier die Bildbeschreibung ein

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.

Benutzer-Avatar
Seredny

Ändern Sie Ihren Code zum Entfernen aus Favoriten:

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

Dazu:

add_action( 'wp_ajax_nopriv_dicaprio_remove_fav_prod', 'dicaprio_remove_fav_prod' );
add_action( 'wp_ajax_dicaprio_remove_fav_prod', 'dicaprio_remove_fav_prod' );

Sie verwenden dieselben Aktionen, um Elemente hinzuzufügen und zu entfernen.

Und noch etwas: Wenn Sie etwas aus Benutzereingaben verwenden ($_POST, $_GET usw.), müssen Sie diese Daten vor der Verwendung bereinigen.

Mehr: https://developer.wordpress.org/themes/theme-security/data-sanitization-escaping/#example-simple-input-field

1344590cookie-checkFehler beim Entfernen eines Produkts aus den Favoriten (ich habe das Wunschlistensystem selbst erstellt)

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy