На этой неделе я исследовал и собрал несколько jquery (я впервые работаю с jquery) для управления складным меню в пользовательском файле WordPress sidebar.php. Меню генерируется динамически, с помощью wp_query для выбора и сортировки пользовательских типов записей по пользовательским таксономиям и пользовательским порядкам сортировки и т. Д. (Поэтому не существует решения для плагинов).
Я хочу сохранить состояние раскрытия / сворачивания разделов меню, когда посетители сайта перемещаются по контенту. С помощью jquery кажется, что я успешно записываю уникальные имена файлов cookie в браузер, и, похоже, я успешно передаю «расширенные» или «свернутые» значения классов моих тегов.
Однако файлы cookie не работают на нескольких страницах - если вы переходите на другую страницу, новые файлы cookie не устанавливаются, пока вы не щелкнете по пункту меню. Если вы нажмете «Назад» в браузере и вернетесь на предыдущую страницу, ваши куки, установленные на предыдущей странице , будут установлены (что хорошо). Обратите внимание, что при переходе на новую страницу меню ДЕЙСТВИТЕЛЬНО восстанавливается, но содержимое меню редко изменяется (поэтому идентификаторы стабильны), а файлы cookie сохраняются только для текущего сеанса (и все еще должны быть перенесены с предыдущих страниц) .
Я экспериментировал с настройкой PHP-файлов cookie, и они прекрасно держались от страницы к странице. Но мои jquery-файлы cookie зависят от конкретной страницы, поэтому я что-то не так делаю.
Вот код jquery, который появляется на моей странице PHP для управления меню и написания моих файлов cookie (ПРИМЕЧАНИЕ: я am ссылаюсь на плагин jquery.cookie.js):
<script type="text/javascript">
$(document).ready(function() {
setTimeout(function() {
$('#port-menu > li > a.expanded + ul, #port-menu > li ul li > a.collapsed + ul').slideToggle('medium');
$('#port-menu > li > a').click(function() {
$(this).toggleClass('expanded').toggleClass('collapsed').parent().find('> ul').slideToggle('medium');
var vartag = $(this).get(0).tagName.toLowerCase();
var varclass = $(this).attr('class');
var cookiename = $(this).parent().attr('id');
$.cookie(cookiename, $(this).attr('class'));
});
$('#port-menu > li ul li > a').click(function() {
$(this).toggleClass('expanded').toggleClass('collapsed').parent().find('> ul').slideToggle('medium');
var vartag = $(this).get(0).tagName.toLowerCase();
var varclass = $(this).attr('class');
var vargenre = $(this).parent().parent().parent().attr('id');
var varoutlet = $(this).parent().attr('id');
var cookiename = vargenre + varoutlet;
$.cookie(cookiename, $(this).attr('class'));
});
}, 250);
});
</script>
Например, динамически создаваемые имена и значения файлов cookie выглядят примерно так:
жанр2: свернуто
жанр3: расширенный
genre1outlet2: расширенный
genre2outlet3: расширенный
genre2outlet4: расширенный
Как уже упоминалось выше, я новичок в jquery. Я также новичок в использовании куки. Любая помощь будет принята с благодарностью.
P.S. После того, как я это заработал, я понятия не имею, как получить информацию из моего массива файлов cookie и применить классы к моему меню - но это отдельная проблема.