Публикация в группе: Полезное для WordPress

По клику на вкладке, в личном кабинете, мы перемещаемся по разным разделам: "Личные сообщения", "Настройка профиля", "Группы" и т.д. но мы не видим изменения в строке url браузера. Таким образом мы не можем поделиться ссылкой на нужную вкладку. - Например на вкладку "Видео" определенного пользователя.

Но зная магию Wp-Recall - мы можем ручками дописать ссылку в строку браузера (посмотрев исходный id нужной нам вкладки). Например id="videorcl" это айдишник вкладки пользователя "Видео". Теперь, если у нас включену ЧПУ, допишем к ?view=videorcl к урл автора, если ЧПУ отключено (я такой) то к урл автора дописываем &view=videorcl

Но лень двигатель прогресса и разрабатывая свое первое дополнение для реколл я захотел дать адрес своей вкладке. Сейчас покажу, как автоматически дописывать к урл, id вкладки.

Код проверен и работает где включен ЧПУ, и там где он отключен!!

Замечу что этот метод не работает в старых эксплорерах и прочих старых браузерах, но не приводит к ошибкам. Можно быть спокойным и вообще похоронить старые браузеры

[art id='7031' size="medium"]


  Основан на HTML5 History API (гуглить по теме window.history.pushState)

без урл

[art id='7032' size="medium"]


с добавлением

[art id='7033' size="medium"]

Добавляем урл на примере вкладки "Видео".

В шапку сайта, или в свой файл скриптов добавляем:

	<script>( function($) {
$(document).ready(function() {
    $('.block_button').click(function() { 
	
        var url = $(this).attr('href');

        // А вот так просто меняется ссылка
        if(url != window.location){
			if ( history.pushState ){ // если броузер поддерживает, то
				window.history.pushState(null, null, url);
			}
		}

        // Предотвращаем дефолтное поведение
        return false;
    });
});

} ) ( jQuery );</script>

по клику на див с классом  .block_button мы записываем в переменную  url содержимое атрибута href. Потом проверяем что браузер поддерживает history.pushState и вставляем в строку адреса браузера  window.history.pushState содержимое нашей переменной.

 

Идем в наше дополнение \wp-content\plugins\recall\add-on\video-gallery\

открываем index.php.   Нам нужна функция добавления вкладки.

Вот она

function add_button_vdrcl($button,$author_lk){
global $user_ID, $rcl_options;;
//if($user_ID!=$author_lk) return $button;
if(!$button) $status = 'active';
	if(!$rcl_options['tab_vdrcl']) $rcl_options['tab_vdrcl'] = 'Видео';
    $button .= ' <a href="#" id="videorcl" class="block_button '.$status.'">'.$rcl_options['tab_vdrcl'].'</a> ';
    return $button;
}

т.к. у меня не используется чпу я выведу id автора через $profid = get_query_var('author');

у кого ЧПУ включен  у вас так же будет всё работать.

function add_button_vdrcl($button,$author_lk){
global $user_ID, $rcl_options;;
$profid = get_query_var('author');
//if($user_ID!=$author_lk) return $button;
if(!$button) $status = 'active';
    if(!$rcl_options['tab_vdrcl']) $rcl_options['tab_vdrcl'] = 'Видео';
    $button .= ' <a href="?author='.$profid.'&view=videorcl" id="videorcl" class="block_button '.$status.'">'.$rcl_options['tab_vdrcl'].'</a> ';
    return $button;
}

в 3-й строке я в переменную загнал id пользователя. в 7-й я вывел переменную и сформировал
адрес вкладки href="?author='.$profid.'&view=videorcl"
- получится в итоге мой.сайт/?author=1&view=videorcl

Сохраняем. Готово.

Аналогично вы можете перевести на этот метод все свои вкладки. Рабочий пример на моем сайте в профилях.

 

upd. 21-09-2014 проверил код на сайте с включенным чпу - все работает хорошо.

Вступайте в мою группу: "Otshelnik-Fm - мои работы (код, плагины, дополнения, статьи и руководства)"
для уведомления о обновлениях и новостях в вашем фиде
20

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

не в сети 2 дня

Вова (Otshelnik-Fm)

4 506
Живой, бодрый, полон идей!
Комментарии: 2252Публикации: 250Регистрация: 27-01-2013Продаж/Покупок: 0/0