WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

Родительская страница — контент подкатегорий

Есть еще такой вопрос. Голову сломал пока думал))

Имеется родительская страница, и на родительской странице есть подкатегории со своим контентом. Что то типа вкладок внутри страницы. И по нажатию на определенную вкладку, должен динамически подтягиваться контент дочерней страницы.

Я уже оформил это в вордпрессе, то есть присвоил дочерним - родительскую. Вывел вкладки с помощью кода

<?php wp_list_pages(array (
							'child_of' => get_the_ID(),
							'title_li' => 0
						)); ?>

он мне показывает дочерние.

А как оттуда контент вывести, не пойму. Какая функция? Или где почитать хотя бы))

Очень благодарен за сайт, и за Вашу помощь!

0
wp_eugen
3 года назад
  • 2

    https://wp-kama.ru/id_2018/ajax-v-wordpress.html

    https://wp-kama.ru/plugin/ajax-simply

    wp_eugen 3 года назад

    Изучил материал, спасибо!
    Только не совсем получилось. Вот код:

        $(document).ready(function(){
    		$('.page_item').click(function(){
    			$('.page_item a').addClass('link');
    			var info = $('link').attr('href')+ '#content';
    			$('#content').hide('fast', loadContent);
    
    			function loadContent(){
    				$('#content').load(info,'',function(){
    				})
    			}
    			return false;
    		})
    	});

    вордпресс с помощью wp_list_pages в самом первом вопросе формирует ссылку:

    <li class="page_item page-item-161">
    		<a href="http://localhost:8888/lab-consulting.ru/about/videnie/">Видение</a>
    </li>

    сейчас по нажатию на ссылку он просто удаляет контент, хотя должен его подгружать с другой страницы. Что я неправильно делаю?

    wp_eugen 3 года назад

    Сейчас он просто удаляет контент и не вставляет новый, с другой вкладки(то есть дочерней страницы)

    wp_eugen 3 года назад

    Все разобрался! Спасибо большое. Еще подредактировал скрипт и получилось)mosking

    wp_eugen 3 года назад

    Только анимация странная. Он показывает как контент убирается, секция сжимается и потом добавляется. А как сделать чтобы просто подставлялось и все?)) Думаю это последнее))

    Andrew 3 года назад

    неуклюжий код, но если работает и устраивает, то ладно. $.load() медленный метод (страница загружается полностью и только потом парсер вырезает оттуда содержимое заявленного блока)

    А как сделать чтобы просто подставлялось и все
    не использовать анимацию smile

    wp_eugen 3 года назад

    спасибо за совет)
    в итоге получился такой код

        $(document).ready(function(){
    		$('.page_item a').click(function(){
    			var info = $(this).attr('href')+ "#content";
    			$('#content').hide('fast', loadContent);
    			$('#loader').fadeIn('normal');
    			function loadContent(){
    				$('#content').load(info,'',function(){
    					$('#content').show('normal', hideLoader());
    				})
    			}
    			function hideLoader(){
    				$('#loader').fadeOut('normal');
    			}
    			return false;
    		})
    	});
    

    а как его сделать более правильным? и за место $load что можно использовать? думал что это метод аякса и значит должен отрабатывать как надо, не знал что можно по другому)

    Andrew 3 года назад

    этот метод использует Ajax, да. Но в случае, если нужна только часть страницы, удобнее использовать запрос Ajax напрямую. В WordPress это потребует немножко PHP-кода и обработки полученного ответа - его надо будет вставить на страницу. По первой ссылке в моем первом ответе есть рабочие примеры.

    wp_eugen 3 года назад

    Спасибо. Перечитал статью. Получается можно сослаться сразу на post с url? Переписал немного код, я правильно понял, что так напрямую будет))

    $(document).ready(function(){
    		$.ajax({
    			type: 'GET',
    			url: 'preimushhestva', //Путь к файлу, который нужно подгрузить
    			cache: false,
    			success: function(responce){        
    					$('#content').append(responce); //Подгрузка внутрь блока с id=content
    			},
    			error: function(){
    				alert('Error!');            
    			}
    		});
    	}); 
    

    Сейчас без события click попробовал))

    Andrew 3 года назад

    можно сослаться сразу на post с url

    нет. Но нативной функцией url_to_postid() можно получить ID записи из URL. Способ считается долгим (просто посмотрите, какой огромный код у функции), и удобнее получить ID записи средствами JavaScript перед отправкой запроса.

    При стандартном оформлении вывода wp_list_pages() ID записи спрятан в классах родительского элемента (в примере это класс page-item-161). Поэтому вырезаете ID регуляркой и добавляете в запрос.

    .append(responce)

    лучше .html(responce)

    Метод append() _добавляет_ контент в в конец блока, а html() - _заменяет_ содержимое блока

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация