#php #wordpress #woocommerce
Вопрос:
Я ищу помощи в решении одной проблемы, которая у меня есть. У меня нет опыта в кодировании. Для моего магазина WooCommerce я хотел, чтобы сообщения о магазине (обновленная корзина и т. Д.) Исчезли через 6 секунд. Я заставил это отлично работать с кодом (используя фрагменты кода).:
add_action( 'wp_head', function () { ?>
<script>
setTimeout(function() {
jQuery('.woocommerce-message, .woocommerce-error').fadeOut('slow')
}, 6000);
</script>
<?php } );
Однако на странице корзины он работает только 1 раз после нажатия кнопки обновить корзину. Как я могу исправить это или просто отключить приведенный выше скрипт только на этой странице?
Ответ №1:
Используйте метод setInterval вместо тайм-аута, потому что он запускается только один раз.
setInterval(function() {
jQuery('.woocommerce-message, .woocommerce-error').fadeOut('slow')
}, 6000);
Комментарии:
1. Спасибо вам за ваш ответ. Используя setInterval, он действительно перезагружается каждый раз. Однако тогда у меня есть еще одна проблема, и она заключается в том, что 6 секунд не являются постоянными на странице корзины. Иногда это составляет всего 1 секунду, а в других случаях-больше. Есть ли способ установить точное время в 6000 мс?
2. поместите этот код в document.ready или документ. функция загрузки, чтобы она срабатывала ровно через 6000 мс точно после готовности или загрузки страницы.
3. Спасибо, но я понятия не имею, как это сделать. Я надеялся вставить какой-нибудь дополнительный код в тот, что был в первом посте, чтобы он работал.
4. jQuery( документ ).готов(функция() { setInterval(функция() { jQuery(‘.woocommerce-сообщение, .woocommerce-ошибка’).Затухание(«медленное») }, 6000); });
5.
add_action( 'wp_head', function () { ?> <script> jQuery( document ).ready(function() { setInterval(function() { jQuery('.woocommerce-message, .woocommerce-error').fadeOut('slow') }, 6000); }); </script> <?php } );
Теперь у меня есть это, но все равно это не работает
Ответ №2:
вам нужно сделать шаг к изменению, чтобы сделать это более ясным. внесите изменения CSS
и добавьте следующие строки в свой .css
файл:
.woocommerce-notices-wrapper{
-webkit-transition: opacity 0s ease-in-out;
-moz-transition: opacity 0s ease-in-out;
-ms-transition: opacity 0s ease-in-out;
-o-transition: opacity 0s ease-in-out;
opacity: 1;
position: absolute !important;
right: 50px !important;
width: 25%;
height: 100%;
z-index: 1000;
top: 130px;
}
а также добавьте следующую строку JS
в свой header.php или в вашем файле .js:
<script>
$(function() {
setTimeout(function() { $(".woocommerce-notices-wrapper").fadeOut(1500); }, 3000)
})
</script>
Примечание:
- если вы добавите второй раздел в свой файл JS, удалите
<script>
и</script>
- Этот
CSS
раздел является необязательным. И я думаю, что это делает панель уведомлений лучше. - Вы можете изменить номер в js, чтобы изменить время.
Комментарии:
1. Спасибо также и за этот метод. Однако из-за этого перестали работать кнопки «Обновить корзину» и «Вернуться в магазин». Кроме того, уведомление пришло в странном положении. Может быть, какая-то несовместимость с некоторыми из моих плагинов?