Как сделать вкладки ЛК на всех страницах сайта?
На сайте было решение, но для более ранних версий плагина.
Кое в чем разобрался, но не до конца...
1. Что бы отобразить вкладки на других страницах, в файле rcl-functions.php в функции rcl_register_tabs закомментируем строку:
remove_action('wp','rcl_register_tabs',10); add_action('wp','rcl_register_tabs_remove',10); function rcl_register_tabs_remove(){ // if(is_admin()||!rcl_is_office()) return false; $rcl_tabs = rcl_get_tabs(); if(!$rcl_tabs) return false; if (!class_exists('Rcl_Tab')) require_once RCL_PATH.'classes/class-rcl-tab.php'; foreach($rcl_tabs as $tab){ $Rcl_Tab = new Rcl_Tab($tab); $Rcl_Tab->register_tab(); } }
2. В файле class-rcl-tab.php необходимо скорректировать функцию print_tab_button, добавив user_ID.
Только там нет хуков... Получается как то так:
function print_tab_button($content){ global $user_LK,$user_ID; if(rcl_is_office()) { $content .= $this->get_tab_button($user_LK);} if(is_admin()||!rcl_is_office()) { $content .= $this->get_tab_button($user_ID);} return $content; }
3. Ссылки на приватные вкладки вне кабинета получаются корректными, но не кликабельными, к ним применяется какой то скрипт.
Как все до ума довести?
Андрей CS сказал(а)
что значит "отобразить вкладки на других страницах"? Вывести список доступных вкладок пользователя за пределами ЛК?
Да, верно, что бы функция rcl_area_menu выводила список за пределами ЛК. Например что бы на странице продукта пользователя, выводилось вкладки владельца этого продукта.
Otshelnik-Fm сказал(а)
Если у вас постоянен набор вкладок - почему бы не вывести под свой проект такВы не можете просматривать опубликованные ссылки
Спасибо за наводку, но хотелось бы вывести всю область вкладок...
Валерий сказал(а)
но хотелось бы вывести всю область вкладок...
что это значит? И мобильное меню чтоли когда кнопки переполнены? - не думаю что так выйдет
А вот тот метод что я предложил - делаете свои кнопки и вставляете полученные методом урл в них. Список вкладок вам известен
Да - этот метод не универсален (если его отдавать другим юзерам не зная их набор вкладок) - но под конкретный проект где известны id вкладок подойдет на 100%
как то так:
global $user_ID; $rcl_tabs = rcl_get_tabs(); if (!class_exists('Rcl_Tab')) require_once RCL_PATH.'classes/class-rcl-tab.php'; $content = '<ul>'; foreach($rcl_tabs as $tab){ $Rcl_Tab = new Rcl_Tab($tab); $content .= '<li>'.$Rcl_Tab->get_tab_button($user_ID).'</li>'; } $content .= '</ul>'; return $content;
Валерий сказал(а)
имел ввиду Область "Menu", ваш метод тоже хороший, подумаю может и так и сделаю, спасибо.
- я понял что про него. Но например когда вы в настройках реколл выводите его в горизонтальном представлении - то переполнившись по горизонтали в нем скрываются не уместившиеся элементы скриптом. И выводятся в мобильном меню по клику
- вот такое поведение не скопировать. Надо значительно переписывать скрипт этого меню.
p.s. Решение что дал Андрей я посмотрел - работает.
Можете еще пожалуйста подсказать, как вывести вкладки именно из области Menu?
Желательно в заданном в Менеджере вкладок порядке или задать перечень вкладок вручную ручную. Возможно ли такое?
Андрей CS сказал(а)
как то так:
global $user_ID; $rcl_tabs = rcl_get_tabs(); if (!class_exists('Rcl_Tab')) require_once RCL_PATH.'classes/class-rcl-tab.php'; $content = '<ul>'; foreach($rcl_tabs as $tab){ $Rcl_Tab = new Rcl_Tab($tab); $content .= '<li>'.$Rcl_Tab->get_tab_button($user_ID).'</li>'; } $content .= '</ul>'; return $content;
Валерий сказал(а)
или задать перечень вкладок вручную ручную
я все равно не понимаю - почему вы взялись за сложное для себя, игноря простое?
Otshelnik-Fm сказал(а)
Если у вас постоянен набор вкладок - почему бы не вывести под свой проект такВы не можете просматривать опубликованные ссылки
это все равно что использовать ЧПУ станок, не умея его программировать, для того чтобы сделать в фанерном листе всего 10 дырок. Хотя под рукой лежит дрель...
Otshelnik-Fm сказал(а)
я все равно не понимаю - почему вы взялись за сложное для себя, игноря простое?
Набор кнопок может меняться в будущем у меня, да и хочется разобраться... простое решение оставлю на крайний случай наверное...
Андрей CS сказал(а)
делайте проверку на область вывода меню, указанную в$tab['output']
, может быть ничего не указано, тогда это тоже menu
Сделал так, все работает:
foreach($rcl_tabs as $tab){ if(isset($tab['output'])&&$tab['output']!='menu') continue; $Rcl_Tab = new Rcl_Tab($tab); $content .= $Rcl_Tab->get_tab_button($user_ID); }
Стал вопрос, как правильно задать сортировку вкладок согласно настройкам, за это отвечает кажется эта функция rcl_get_area_options();
, подскажите как её правильно вставить в цикл?
Спасибо, но фильтр почему то не срабатывает, вот полный код:
global $user_ID; $rcl_tabs = rcl_get_tabs(); if (!class_exists('Rcl_Tab')) require_once RCL_PATH.'classes/class-rcl-tab.php'; $content = '<div id="lk-menu" class="rcl-menu">'; $rcl_tabs = apply_filters('rcl_tabs',$rcl_tabs); foreach($rcl_tabs as $tab){ if(isset($tab['output'])&&$tab['output']!='menu') continue; $Rcl_Tab = new Rcl_Tab($tab); $content .= $Rcl_Tab->get_tab_button($user_ID); } $content .= '</div>'; echo $content;