• DONATE to NULLED!
    Вы можете помочь Форуму и команде, поддержать финансово.
    starwanderer - модератор этого раздела будет Вам благодарен!

Помощь Вывод информации на динамической странице

Iga

Гуру форума
Регистрация
12 Янв 2014
Сообщения
425
Реакции
83
У меня каталог фильтруется с помощью плагина facet.
Результатом фильтрации является изменение в адресной строке вида
Код:
?fwp_regions_facet=kosta-blanka&fwp_city_facet=torreveha
Для улучшения сео мне нужно выводить заголовок в зависимости от города. В данном примере - это будет Купить недвижимость в Торревьеха.

Мои размышления:
Можно читать адресную строку на предмет нахождения там определённого города и выводить соответствующий заголовок.
Код:
strstr($_SERVER['REQUEST_URI'], 'torreveha'

Городов вот только у меня 170 штук. Я так понимаю придётся ручками прописывать для каждого? И если добавляется новый город, то не забывать дописать условие и для него?

Города у меня - таксономия. Можно же получить массив терминов этой таксономии и как-то с ним оперировать?
Дальше что-то моя логика заканчивается.
 
Последнее редактирование:
Скорее всего получится сделать на основе функции Для просмотра ссылки Войди или Зарегистрируйся
Довольно подробно о том как её юзать расписано здесь Для просмотра ссылки Войди или Зарегистрируйся


Скорее всего будет что-то типа такого:
PHP:
function getCityName() {
	$parsedUrl = parse_url($_SERVER['REQUEST_URI']);
	if (isset($parsedUrl['query']) === false) {
		return false;
	}
	$parsedQuery = parse_str($parsedUrl['query']);
	if (isset($parsedQuery['fwp_city_facet']) === false) {
		return false;
	}
	$citySlug = $parsedQuery['fwp_city_facet'];
	
	$terms = get_terms( ['taxonomy']);
	foreach ($terms as $term) {
		if ($term['slug'] == $citySlug) {
			return $term['name'];
		}
	}
}
добавить в function.php
$term['slug'] и $term['name'] и ['taxonomy'] - параметры своей таксономии проставьте

В нужном месте
PHP:
echo getCityName();
 
Последнее редактирование:
  • Нравится
Реакции: Iga
$term['slug'] и $term['name'] и ['taxonomy'] - параметры своей таксономии проставьте
Вот тут вот я не уловил.
UPD. уловил...не к тому контексту обдумывал.

Я, правда, пошел по своим каким-то тропам и размышлениям...
Можно как-то из массива
Код:
$params = array(
'taxonomy' => 'building_city',
'hide_empty' => true,
);
$terms = get_terms( $params );
Он у меня выдаёт вот такую жбонь
Код:
Array ( [0] => WP_Term Object ( [term_id] => 342 [name] => Bigastro [slug] => bigastro [term_group] => 0 [term_taxonomy_id] => 339 [taxonomy] => building_city [description] => [parent] => 0 [count] => 1 [filter] => raw ) [2] => WP_Term Object ( [term_id] => 339 [name] => Daya Nueva [slug] => daya-nueva [term_group] => 0 [term_taxonomy_id] => 336 [taxonomy] => building_city [description] => [parent] => 0 [count] => 1 [filter] => raw ) [4] => WP_Term Object ( [term_id] => 340 [name] => Jávea [slug] => javea [term_group] => 0 [term_taxonomy_id] => 337 [taxonomy] => building_city [description] => [parent] => 0 [count] => 1 [filter] => raw ) [11] => WP_Term Object ( [term_id] => 327 [name] => Альгорфа [slug] => algorfa [term_group] => 0 [term_taxonomy_id] => 324 [taxonomy] => building_city [description] => [parent] => 0 [count] => 2 [filter] => raw ) [29] => WP_Term Object ( [term_id] => 133 [name] => Бенихофар [slug] => benihofar [term_group] => 0 [term_taxonomy_id] => 133 [taxonomy] => building_city [description] => [parent] => 0 [count] => 7 [filter] => raw ) [37] => WP_Term Object ( [term_id] => 328 [name] => Виллахойоса [slug] => villahojosa [term_group] => 0 [term_taxonomy_id] => 325 [taxonomy] => building_city [description] => [parent] => 0 [count] => 2 [filter] => raw ) [44] => WP_Term Object ( [term_id] => 318 [name] => Гвардамар-дель-Сегура [slug] => gvardamar-del-segura [term_group] => 0 [term_taxonomy_id] => 318 [taxonomy] => building_city [description] => [parent] => 0 [count] => 8 [filter] => raw ) [87] => WP_Term Object ( [term_id] => 212 [name] => Лос Алькасарес [slug] => los-alkasares [term_group] => 0 [term_taxonomy_id] => 212 [taxonomy] => building_city [description] => [parent] => 0 [count] => 4 [filter] => raw ) [92] => WP_Term Object ( [term_id] => 218 [name] => Лос-Монтесинос [slug] => los-montesinos [term_group] => 0 [term_taxonomy_id] => 218 [taxonomy] => building_city [description] => [parent] => 0 [count] => 1 [filter] => raw ) [110] => WP_Term Object ( [term_id] => 317 [name] => Ориуэла [slug] => oriujela [term_group] => 0 [term_taxonomy_id] => 317 [taxonomy] => building_city [description] => [parent] => 0 [count] => 44 [filter] => raw ) [117] => WP_Term Object ( [term_id] => 248 [name] => Пилар Де Ла Орадада [slug] => pilar-de-la-oradada [term_group] => 0 [term_taxonomy_id] => 248 [taxonomy] => building_city [description] => [parent] => 0 [count] => 15 [filter] => raw ) [128] => WP_Term Object ( [term_id] => 262 [name] => Рохалес [slug] => rohales [term_group] => 0 [term_taxonomy_id] => 262 [taxonomy] => building_city [description] => [parent] => 0 [count] => 10 [filter] => raw ) [137] => WP_Term Object ( [term_id] => 341 [name] => Сан-Мигель-дэ-Салинас [slug] => san-migel-dje-salinas [term_group] => 0 [term_taxonomy_id] => 338 [taxonomy] => building_city [description] => [parent] => 0 [count] => 3 [filter] => raw ) [139] => WP_Term Object ( [term_id] => 272 [name] => Сан-Педро-дель-Пинатар [slug] => san-pedro-del-pinatar [term_group] => 0 [term_taxonomy_id] => 272 [taxonomy] => building_city [description] => [parent] => 0 [count] => 6 [filter] => raw ) [144] => WP_Term Object ( [term_id] => 277 [name] => Сан-Хавьер [slug] => san-haver [term_group] => 0 [term_taxonomy_id] => 277 [taxonomy] => building_city [description] => [parent] => 0 [count] => 2 [filter] => raw ) [145] => WP_Term Object ( [term_id] => 278 [name] => Санта Пола [slug] => santa-pola [term_group] => 0 [term_taxonomy_id] => 278 [taxonomy] => building_city [description] => [parent] => 0 [count] => 7 [filter] => raw ) [155] => WP_Term Object ( [term_id] => 290 [name] => Торревьеха [slug] => torreveha [term_group] => 0 [term_taxonomy_id] => 290 [taxonomy] => building_city [description] => [parent] => 0 [count] => 46 [filter] => raw ) [161] => WP_Term Object ( [term_id] => 299 [name] => Финестрат [slug] => finestrat [term_group] => 0 [term_taxonomy_id] => 299 [taxonomy] => building_city [description] => [parent] => 0 [count] => 5 [filter] => raw ) [168] => WP_Term Object ( [term_id] => 326 [name] => Эльче [slug] => jelche [term_group] => 0 [term_taxonomy_id] => 323 [taxonomy] => building_city [description] => [parent] => 0 [count] => 10 [filter] => raw ) )
посравнивать значения с адресной строкой и если [slug] совпадает со слагом в адресе, то вывести [name]?
UPD. Или ваш код этим и занимается...я прочитал его уже много раз и с каждым разом приходит новое осмысление?

Я просто оч повехностен в php и с массивами не справлюсь, но если предоставляется возможность люблю поковыраться, а не тупо копипастить, и набраться немного знаний :)
 
Последнее редактирование:
посравнивать значения с адресной строкой и если [slug] совпадает со слагом в адресе, то вывести [name]?
UPD. Или ваш код этим и занимается...я прочитал его уже много раз и с каждым разом приходит новое осмысление?
именно это он и делает )
 
Всё бы хорошо, но не работает у меня...

разбираю для себя по-кусочкам:
Код:
$parsedUrl = parse_url($_SERVER['REQUEST_URI']);
echo $parsedUrl['query']; //fwp_city_facet=torreveha

Код:
$parsedQuery = parse_str($parsedUrl['query']);
echo $fwp_city_facet; //torreveha
а дальше не соображу, почему $citySlug ничего не возвращает?

$terms у меня не выводит массива :(
 
Последнее редактирование:
в моем коде замени
PHP:
$terms = get_terms( ['taxonomy']);

на свой
PHP:
$params = array(
'taxonomy' => 'building_city',
'hide_empty' => true,
);
$terms = get_terms( $params );

по идее, этого будет достаточно
 
в моем коде замени
Да конечно заменял и array( 'taxonomy' => 'building_city', 'hide_empty' => true); тоже пробовал по аналогии со своими экспериментами.
Пусто в <?php echo getCityName(); ?>

Вот весь код
PHP:
function getCityName() {
    $parsedUrl = parse_url($_SERVER['REQUEST_URI']);
    if (isset($parsedUrl['query']) === false) {
        return false;
    }
    $parsedQuery = parse_str($parsedUrl['query']);
    if (isset($parsedQuery['fwp_city_facet']) === false) {
        return false;
    }
    $citySlug = $parsedQuery['fwp_city_facet'];
    $params = array(
        'taxonomy' => 'building_city',
        'hide_empty' => true,
        );
        $terms = get_terms( $params );
    foreach ($terms as $term) {
        if ($term['slug'] == $citySlug) {
            return $term['name'];
        }
    }
}
 
Вот так вот заработало
PHP:
function getCityName() {
    $parsedUrl = parse_url($_SERVER['REQUEST_URI']);
    if (isset($parsedUrl['query']) === false) {
        return 'нет строки';
    }
    $parsedQuery = parse_str($parsedUrl['query']);
    if ($fwp_city_facet == false) {
        echo 'нет слага';
    }
    $params = array(
        'taxonomy' => 'building_city',
        'hide_empty' => true,
        );
        $terms = get_terms( $params );
    foreach ($terms as $term) {
        if ($term->slug == $fwp_city_facet) {
            return $term->name;
        }
    }
}
 
Назад
Сверху