Я пытаюсь создать простой список «любимых» продуктов. По сути, при просмотре списка продуктов кто-то может нажать кнопку, которая добавит его в избранное.
Идея состоит в том, что они нажимают кнопку, и ajax добавляет идентификатор продукта в массив пользователя. мета. В следующий раз, когда они нажмут ту же кнопку, необходимо удалить идентификатор продукта из метаданных пользователя.
У меня есть все настройки ajax, и при первом нажатии кнопки добавляется идентификатор продукта. Однако, если я нажму на него еще раз, вместо удаления идентификатора из метаданных пользователя появится ошибка. Ошибка просто «Ошибка обновления метаданных пользователя».
Я полагаю, что ошибка возникает из-за unset($fav_products[$product_id]);
Вот функция PHP, вызываемая ajax
function update_user_meta_ajax() {
$user_id = isset( $_POST['user_id'] ) ? intval( $_POST['user_id'] ) : 0;
$product_id = isset( $_POST['product_id'] ) ? sanitize_text_field( $_POST['product_id'] ) : '';
$meta_key = isset( $_POST['meta_key'] ) ? sanitize_text_field( $_POST['meta_key'] ) : '';
$meta_value = isset( $_POST['meta_value'] ) ? sanitize_text_field( $_POST['meta_value'] ) : '';
// Get Saved Array
$fav_products = get_user_meta($user_id, 'fav_products', true);
// Check if array is empty
if (empty($fav_products)) {
$fav_products = array();
}
// Add or Remove Item from Array
if($meta_value == 'yes'){
$fav_products[] = $product_id;
}else{
unset($fav_products[$product_id]);
}
if (! current_user_can('edit_user', $user_id)) {
wp_send_json_error(array('message' => 'Insufficient permissions.'));
}
if (update_user_meta($user_id, $meta_key, $fav_products)) {
wp_send_json_success();
} else {
wp_send_json_error(array('message' => 'Failed to update user meta.'));
}
wp_die();
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... a-via-ajax
WordPress добавить/удалить пользовательскую мета через AJAX ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение