Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

WP. Реализована функция добавления поста в "избранное" пользователя. На странице поста размещена ссылка "удалить/добавить" которая добавляет или удаляет этот пост из "избранного пользователя" (избранное выводится на отдельной странице). Баг заключается в том что, если находясь на странице поста, уже добавленного в избранное, кликнуть быстро два или больше раз по ссылке "удалить", то из избранного удалиться не только этот пост но и один или несколько других добавленных в избранное ранее.  Таким образом, находясь на странице любого поста, беспрерывно кликая по ссылке добавить/удалить можно в итоге очистить все избранное, чего происходить не должно.

Еще раз, на практике это происходит так:

находясь на странице поста кликаем ссылку "добавить в избранное" (пост добавляется в избранное, ссылка "добавить в избранное" меняется на ссылку "удалить из избранного"). Кликаем на ссылку "удалить из избранного" (пост удаляется из избранного, ссылка "удалить из избранного" меняется на ссылку "добавить в избранное").

Все хорошо, Но! Если кликнуть на ссылку "удалить" два раза (быстро), то из избранного удалится этот пост и плюс еще один последний добавленный в избранное.  Или если просто быстро кликать по ссылке много раз то избранное быстро очистится.

А должно быть так:

находясь на странице поста при многократных кликах по ссылке добавить/удалить, в независимости от скорости кликания, должна происходить строгая очередность обработки запроса: добавился, удалился, добавился, удалился...  и именно только этот пост, на котором находимся.

Страница поста:

 

            $userFavList = explode(",", $userFavList);

     $addListEl = ' style="display:none"';

     $removeListEl = ' style="display:none"';

            if(in_array($post->ID, $userFavList)) {

                $removeListEl = ' style="display:inline-block"';

  $addClass = ' class="added"';

            }

     else{

         $addListEl = ' style="display:inline-block"';

            }

             ?>

 >>Удалить из избранного>Добавить в избранное

Файл script.js:

function addToMyFavorite(userId,filmId, el){

            var thisEl = jQuery(el);

            var actn = 'add';

            if(thisEl.hasClass('added')){

                actn = 'removed';

            }

            jQuery.ajax({

                url: addToFavoriteParth + "/addons/favorite.php",

                data: 'userID=' + userId + '&filmID=' + filmId + '&action=' + actn,

                success: function(data){

      var flItem = thisEl.parent('.post');

                    if(data == 'added'){

   showLink(thisEl, 'add');

                        //thisEl.addClass('added');

                    }

                    if(data == 'removed'){

                        //thisEl.removeClass('added');

   if(thisEl.hasClass('favListItem')){    

    flItem.animate({opacity: 0},300,function(){jQuery(this).hide()});

    }

    showLink(thisEl, 'remove');

   }

   if(data == 'empty'){

                         //thisEl.removeClass('added');

    flItem.animate({opacity: 0},300,function(){jQuery(this).hide().after('Ничего нет в избранном')});

    showLink(thisEl, 'remove');

    }

   }

  });

 }

function showLink(el, arg){

  var duration = 300;

  var linkText = jQuery('.' + arg, el);

  var hiddenLink = jQuery('span:hidden', el);

  if(linkText.is(':visible')) {

   linkText.fadeOut(duration, function(){

    if(arg == 'add'){

     el.addClass('added'); 

    }

    else{

     el.removeClass('added'); 

    }

    hiddenLink.fadeIn(duration)

   })

  }

 }

Файл favorite.php:

include_once($_SERVER['DOCUMENT_ROOT'].'/wp-config.php');

global $wpdb;

$user_id = $_GET["userID"];

$film_id = $_GET["filmID"];

$actn = $_GET["action"];

$chckClose = $_GET["chk"];

$favList = get_usermeta($user_id, 'favorite_film');

if($chckClose == true){

if(!$favList) echo 'empty';

}

if($favList) {

$favList = explode(",", $favList);

        if($actn == 'add') {

            if(!in_array($film_id ,$favList)) {

                array_unshift($favList, $film_id);

                echo 'added';

}

        }

        elseif($actn == 'removed'){            

$removeFav = array_search($film_id, $favList);

            unset( $favList[$removeFav]);

if($favList){

echo 'removed';

}

else{

echo 'empty';

}

        }

        $newFavList = implode(",", $favList);

        update_usermeta( $user_id, 'favorite_film', $newFavList );

}

else{

update_usermeta( $user_id, 'favorite_film', $film_id );

echo 'added';

}

?>

Сайт на локале, поэтому продемонстрировать наглядно, к сожалению, не могу. Жду предложений.

7 лет назад
oz-style
42 годаИспания
14 лет в сервисе
Был
7 лет назад
Выбранный исполнитель
gggggu
36 летУкраина
12 лет в сервисе
Был
25 дней назад
7 лет назад
$3
1 день
Быстро и качественно под нужные требования переделал скрипт. Рекомендую.
Хорошо поставленная задача, своевременная оплата, рекомендую.
  • Похожие заказы
  • - После смены языка перестали отображаться товары в каталоге. - Работа с корзиной (убрать лишнее) - Доработать карточку товара (всплывающее окно) И пару мелочей, более подробное + сам сайт вышлю непосредственно заинтересованным лицам. Стоимость и сроки можете формировать ...

    Закрыт
    7 лет назад
  • Здравствуйте!  Необходимо доделать меню для сайта по аналогии с www.altschool.com/ с проработкой мобильной версии.  Есть HTML/CSS макет сайта, загвоздка только в меню.  Сделать необходимо сейчас.  Кто свободен и готов взяться – сориентируйте, пожалуйста, по стоимости.  Имеющиеся материалы вышлю по запросу.  Оплата ...

    Закрыт
    7 лет назад
  • $1

    И так на сайте есть  платные функции такие как вип,выделение,спецразмещение  мне нужно еще добавить подъем обявления на верх и пакет услуг что бы можно было применить все услуги вот сам скрипт  [url=https://yadi.sk/d/sE-U2gVB33xZX8]yadi.sk/d/sE-U2gVB33xZX8 [/url]за все это дело отвечают файлы  ...

    Закрыт
    7 лет назад
  • $15

    Необходимо произвести небольшую доработку сайта [url=http://borsac.ru/]http://borsac.ru/[/url] Как сейчас: Если товар распродан, то он продолжает отображаться на сайте с пометкой, что товара нет в наличии Как должно быть: Если товар распродан, он автоматически принимает статус "Продажа товара приостановлена". Все товары с ...

    Закрыт
    7 лет назад
  • Подробное ТЗ во вложении. Если вкратце - нужна система подбора туров, дизайн и верстка страниц уже готовы. Прошу сразу указывать ориентировочную стоимость и срок. Верстка: http://tur.bit-storm.ru/index.html - Главная
 http://tur.bit-storm.ru/hotels-details.html - Карточка отеля 
http://tur.bit-storm.ru/page-about-us.html - О нас 
http://tur.bit-storm.ru/shop-grid.html - Страница выбора отелей
 


http://tur.bit-storm.ru/reviews.html - ...

    Закрыт
    7 лет назад
  • http://ausganica.ru спарсить: категории / подкатегории, цена, картинка, название товара, артикул, описание, характеристика одному товару может быть присвоено 2 цены (см скрин) нужно будет спарсить отдельно каждый товар, каждому товару своя цена

    Завершен
    7 лет назад