Публикация в группе: Web-Blog - Блог о блоге на Wordpress!

Категории группы: wp-recall

<<<Размещаем вкладки ЛК на всех страницах сайта! (часть 2)

Всем привет!

В прошлых частях "Размещаем вкладки ЛК на всех страницах сайта!", мы вывели гостевые вкладки на всех страницах сайта, потом смогли вывести все вкладки ЛК на всех страницах сайта, в этой части поговорим о том, как их сделать активными!

В php есть очень полезный инструмент, кодеры его называют одним словом "Регулярка"!

Регуля́рные выраже́ния (англ. regular expressions) — формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов (символов-джокеров, англ. wildcard characters). По сути это строка-образец (англ. pattern, по-русски её часто называют «шаблоном», «маской»), состоящая из символов и метасимволов и задающая правило поиска.

Выписка из Википедии

Сегодня мы решим вопрос касаемо не хватающей кракозябры user=1&, решим его с помощью магии регулярки!

В прошлых статьях у нас получился код выводящий все вкладки на всех страницах,

global $user_ID;
   echo apply_filters( 'the_button_wprecall', $content, $user_ID );

единственное активных только на странице ЛК.

Давайте немного изменим наш код, засунем наш фильтр в переменную которой дадим название $rcl_menu_button

$rcl_menu_button = apply_filters( 'the_button_wprecall', $content, $user_ID );

и сразу выведем ее на сайт

echo $rcl_menu_button;

, на сайте получаем тоже самое, но теперь у нас наши вкладки в переменной и мы можем ее использовать в регулярных выражениях!

Есть регулярка,

preg_replace("/A/","B" );

 которая заменяет одно на другое, ее мы и будем использовать, в примере «А» меняем на «Б».

Для начала рассмотрим и сравним две ссылки/вкладки, не активной и активной:

http://домен/profil/?tab=profile

http://домен/profil/?user=1&tab=profile

, сравним их и увидим, что нам нужно заменить:

http://домен/profil/?tab=profile

http://домен/profil/?user=1&tab=profile

, я выделю красным то, что мы будем удалять и выделил зеленым то, что будем вставлять с помощью регулярки. Обратите внимание, что вместо единички мы будем добавлять переменную $user_ID, так как нам нужно получать ID авторизованного пользователя!

Таким образом, наше регулярное выражение будет выглядеть следующим образом:

preg_replace("/tab/","user=$user_ID&tab",$rcl_menu_button);

где мы заменяем tab, на user=$user_ID&tab и подставляем ID пользователя с помощью переменной $user_ID.

Все, теперь собираем все вместе и проверяем результат, распишу все по этапам из чего будет состоять наш код:

1 – глобальные переменные, а именно $user_ID

global $user_ID;

2 – фильтр заключенный в переменную $rcl_menu_button

$rcl_menu_button = apply_filters( 'the_button_wprecall', $content, $user_ID );

3 – полученное нами регулярное выражение

$rcl_menu_button = preg_replace("/tab/","user=$user_ID&tab",$rcl_menu_button);

4 – вывод переменной $rcl_menu_button на сайт

echo $rcl_menu_button;

В итоге получаем следующий код, позволяющий выводить активные вкладки на всех страницах сайта:

global $user_ID;
   $rcl_menu_button = apply_filters( 'the_button_wprecall', $content, $user_ID );
   $rcl_menu_button = preg_replace("/tab/","user=$user_ID&tab",$rcl_menu_button);
echo $rcl_menu_button;

Все, мы решили поставленную задачу, а именно вывели активные вкладки на всех страницах сайта, причем полученные нами вкладки, сортируются и переименовываются с помощью пункта меню "Настройки вкладок" так же как и вкладки в ЛК! Данный способ работает, если ЛК выводится с помощью шорткода, не работает с ЛК на странице автора, но если пошаманить с регулярными выражениями и настройками постоянных ссылок, то и это не проблема!

Дальше, полученный код можно пропускать через регулярные выражения, дописывать классами и стилями и получать полноценное меню, в принципе уже есть рабочее дополнение по выводу меню ЛК в header, но я пока его не выкладывал!

Предлагаю обсудить, услышать критику и замечания, а так же комментария по применению и доработке данного способа!

P.S. я не так давно начал кодить и я понимаю, что иногда мои методы колхозны и не профессиональны, но для меня главное, что они работают

Всем добра и позитива!!!

2

Автор публикации

не в сети 1 неделя

Web-Blog

378
Комментарии: 264Публикации: 15Регистрация: 06-07-2014Продаж/Покупок: 0/0