И таки доброго утро всем!
Только что столкнулся с небольшой проблемой - формирую дизайн шапки сайта, заказчик захотел там все переделать. Recall bar у меня по умолчанию скрыт для гостей :
// отключим реколлбар WP-Recall для гостей function my_guest_hide_rclbr(){ if(is_user_logged_in()) return false; // logged - откатываемся remove_action('wp_footer','rcl_recallbar_menu',3); } add_action('init','my_guest_hide_rclbr');
Все хорошо, только он (бар) инлайном пишет сss: html margin-top: 36px !important.
И у меня разрыв шаблона... Как быть?
Отключаю бар в настройках - конечно разрыв пропадает...
пока реально вижу только так: переписать стиль инлайн с !important можно только через JS. В нем надо проверить логин и подставить нужное значение для html для пользователя, который незалогонин. Что-то типа того:
var $logged = $('body'); if( !$logged .hasClass('logged-in') ){ $('html').attr('style', 'margin-top:0 !important'); }
Но тут появляются прыжки отрисовки, что ... так себе. Этот стиль конечно надо убирать на этапе формирования структуры самого реколбара. Да, честно говоря, - давно пора сделать чекбокс в настройках самого бара - показывать только залогоненым. Многим это пригодиться.
перепишет. Почитайте спецификацию css
бррр... может мы о разном говорим? у меня стили медиазапросов вообще подключаются отдельным файлом, чтобы головоломок не было. Т.е. - то что я пишу в медиа для десктопа, к примеру, перепишет 36px !important из файла реколбара? да нет ... и попробовал для верности - мож точно я чего забыл уже - конечно не переписывает.
А вот специфичность селектора - да, это спасибо, забыл про root. Но в этом случае надо разбираться - а как переопределить его только для залогониных? body сss стили идут позже, где я могу подцепить стиль определения...
и пока работающего решения нет - :root убирает марджин, но тогда для залогониных весь вывод улетает под бар...
может быть гостевой css. У меня во многих проектах так - не грузим лишнее - что ему не надо.
Или же чистый php и api wordpress.
Вы не знаете как с помощью php написать условие и написать туда стиль? Боюсь эти вопросы касаются работе с вордпрессом, а не с плагином WP-Recall. Попробуйте найти ответ на просторах сети - "как написать стили с условием для незалогиненного в вордпресс"
знаю, Владимир - я уже хотел так написать через php- но это ж ... все нагрузка, у меня сайт и так уже ... такой немаленький вырисовывается, пока остановлюсь на своем jQuery - оттестировал только что - работает как автомат калашникова, только перерисовка, да бог с ней... Уже мысль была залезть в код и убрать этот инлайн, потом самому его прописать - это самое простое и быстрое... Мож чуть подале так и сделаю...
Игорь Динов сказал(а)
но это ж ... все нагрузка
какая нагрузка?
вы проведите замеры одного вызова вашей функции это 0.00001мб и 0.000001сек - это нагрузка?
Или вы из тех кто в футере год убирает echo date('Y');
и пишет 2019
жестко? Потому что это тоже нагрузка. Не смешите людей. Это экономия на спичках ради удобства.
А про вашего варианта с jquery - неверный подход. Вы проверьте например синтетически через хром: ограничте полосу пропускания или мощность устройства - и увидите что скачки будут внушительными по времени.
Идея влезть в код... Зачем вам рубить сук на котором вы сидите или ваши клиенты? Они не смогут без оглядки обновляться. А это важно.
это все правильно, только ... чуть позже.
Вообще хук rcl_recallbar_menu сам это все должен делать. Андрею стоит на это обратить внимание.
Идея влезть в код нехорошая, как и сама мысль прописывать жестко инлайн стиль с !important. Но - как есть. Без оглядки обновляться с заменой одного файла... ну... нехорошо, но если очень надо - то можно: я абсолютно согласен, что рывки нехорошие. Думаю над этим в бекграунде.
Игорь Динов сказал(а)
как и сама мысль прописывать жестко инлайн стиль с !important
вы не понимаете почему так было сделано. Объяснять такой подход долго. Но это верный стиль для того чтобы его использовали тысячи людей.
p.s. решение вам дали. Оно работает отлично для меня. Минусы других принципов тоже пояснили. Пора выходить из оффтопа