Нужна помощь с дружественными URL-адресами в Wordpress
Я создаю пользовательские шаблоны som в Wordpress и передаю некоторые данные в URL-адресах.
В настоящее время мой URL-адрес выглядит следующим образом: http://www.mysite.com/designers/?id=43&name=designer +имя
URL-адрес содержит идентификатор дизайнера и имя дизайнера.
Я бы очень хотел использовать это: http://www.mysite.com/designers/designer +имя/
Моя структура постоянных ссылок настроена на /%category%/%postname%/
Мой файл .htaccess выглядит так это:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Я посмотрел на http://codex.wordpress.org/Using_Permalinks , но не стал мудрее.
У меня есть два вопроса:
- Есть ли какой-либо смысл в изменении вышеуказанного URL-адреса в отношении SEO
- Как я могу получить "красивый" URL-адрес?
ОБНОВЛЕНИЕ
Я добавляю еще немного информации для уточнения.
- Я сам разрабатываю сайт
- Шаблон на 100% является пользовательским шаблоном
- На основе информации из $_GET я загружаю данные из своей пользовательской таблицы БД и отображаю их на странице
- На моем сайте в среднем 3-400 уникальных посетителей в день. На пике у меня 2000 уникальных посетителей в день.
- Я разрабатываю онлайн-журнал мод
-
Мой URL-адрес в настоящее время создается следующим образом:
Url = get_permalink().'?bid='.$brand->id.'&name='.$brand->name;
Я использовал аналогичный метод here:
http://storelocator.no/search/?brandID=4673&storeID=0&brand=Moods+of+Norway
Использование пользовательского типа записи было вариантом, который я рассматривал, но мне нужна была собственная структура таблиц, потому что дизайнеры/бренды связаны с галереями (и больше ссылок на другие таблицы в будущем). Таким образом, сохранение данных о брендах в таблице сообщений WP не сработает.
Поэтому мне нужно знать следующее:
- Что мне нужно сделать с моей постоянной ссылкой структура?
- Что мне нужно сделать с моим файлом.htaccess?
3 answers
Я сам не знаю (или не знал) многого о правилах перезаписи (но, похоже, никто этого не делает ), но, основываясь на некоторых других ответах здесь, я заставил это работать. Мы добавляем новое правило перезаписи, которое соответствует designers/designer_name/
. Мы "очищаем" правила перезаписи, чтобы они сохранялись в базе данных, но обязательно делаем это только один раз, так как это дорогостоящая операция. Теперь мы настроим шаблон, который будет соответствовать нашей странице, и сохраним дополнительную часть в переменной запроса designer_name
. Так как WordPress не знает, что он должен посмотрите на эту переменную, мы подключаемся к фильтру query_vars
и говорим ему, чтобы он тоже посмотрел на это.
Теперь в файле темы page-designers.php
мы можем сделать get_query_var('designer_name')
, и он даст вам имя дизайнера. Если вам нужны дополнительные материалы, такие как подкачка (designer/designer_name/page/2
), вам нужно добавить для этого дополнительное правило перезаписи (или каналы, или что-то еще, что начинается с designer/designer_name
). Но основные вещи должны работать.
<?php
/*
Plugin Name: WPA 3537
Plugin URI: http://wordpress.stackexchange.com/questions/3537/need-help-with-friendly-urls-in-wordpress
Description: Need help with friendly URL's in Wordpress
Version: 1.0
Author: Jan Fabry
*/
register_activation_hook(__FILE__, 'wpa3537_flush_rules');
function wpa3537_flush_rules()
{
add_rewrite_rule('designers/([^/]+)', 'index.php?pagename=designers&designer_name=$matches[1]', 'top');
flush_rewrite_rules(false);
}
add_filter('query_vars', 'wpa3537_query_vars');
function wpa3537_query_vars($query_vars)
{
$query_vars[] = 'designer_name';
return $query_vars;
}
Сначала у меня вопрос: Как вы получаете URL-адреса, которые выглядят следующим образом?
http://www.example.com/designers/?id=43&name=designer+name
Это не стандартные URL-адреса для WordPress; так ли, по вашему мнению, должно работать, или ваш сайт действительно работает таким образом? И если да, то как появились эти URL-адреса? Это сильно настроенный сайт? Кто его настроил; вы или кто-то другой?
О .htaccess
Тем не менее, мы начнем с .htaccess
, чтобы убрать это с пути . Ваш идентичен практически в любой другой файл установки WordPress .htaccess
, за исключением установок, которые 1.) служат для подкаталога URL (и тогда разница тривиальна), 2.) были люди, которые не понимают, как WordPress перенаправляет URL-адреса, обходя их и/или 3.) за исключением тех редких продвинутых установок, которые на самом деле требуют .htaccess
удаления (и если вы не знаете, зачем вам это нужно, вероятность почти 100%, что вы этого не сделаете.)
О ведущих категориях в WordPress URL-адреса
Далее, ваш желаемый формат URL-адреса с именем категории в первом сегменте пути - это шаблон, который сообщество WordPress не одобряет по соображениям производительности, см. Это:
В основном проблема в том, что если у вас больше, чем несколько "Страниц" (т.Е. $post->post_type=='page'
), то WordPress будет сравнивать каждый URL-адрес для каждой загрузки страницы с URL-адресом для каждой страницы, и это может замедлить отключите свою систему. Тем не менее, если у вас всего несколько страниц и у вас нет сайта с высоким трафиком, я считаю, что не стоит беспокоиться об этом.
( источник: mikeschinkel.com)
Теперь перейдем к вашим вопросам.
1.) Есть ли какой-либо смысл в изменении вышеуказанного URL-адреса в отношении SEO
Да. Очистка URL-адреса улучшает плотность ключевых слов. Тем не менее, на мой взгляд в SEO есть гораздо больше, чем просто поиск движок видит и делает ваши URL-адреса более дружелюбными, что придаст людям больше уверенности в них и повысит вероятность того, что они будут ссылаться на ваш сайт в блогах и делиться вашими ссылками в Twitter, Facebook и других местах. Это создает два преимущества: больше ссылок, которые видят поисковые системы, и больше информации от совместного использования.
Лично мне нравится думать об этом как о том, как одеваются; если вы действительно неряшливы, то у людей будет более низкое подсознательное мнение о вас, чем если бы вы были дотошны. Я думаю то же самое относится и к URL-адресам; если у вас чистые, удобные для пользователя URL-адреса, ваш дом, похоже, в порядке; если у вас неаккуратные URL-адреса, ваш сайт просто не будет "чувствовать" то же самое, опять же IMO. (Неприятные URL-адреса - одна из причин, по которой я ненавижу использовать LinkedIn. Я думаю, что они были бы более успешными, если бы обращали внимание на URL-адреса, как, например, Твиттер.)
2.) Как я могу получить "красивый" URL-адрес?
Я думаю, что эта статья и/или эта страница Кодекса должны быть способны помочь?
Оптимизация постоянных ссылок WordPress
Подпанель постоянных ссылок настроек (в Кодексе)
В основном вам нужно установить шаблон постоянных ссылок, а затем сохранить их. Возможно, вам придется использовать FTP, чтобы изменить настройки разрешений на .htaccess
, прежде чем WordPress сможет сохранить их для вас. Надеюсь, этого снимка экрана будет достаточно, чтобы проиллюстрировать, что вам нужно сделать:
( источник: mikeschinkel.com)
Дайте мне знать, если это ответ на ваш вопрос, и если нет, то где вы застряли.
Другие ответы по постоянной ссылке
Кроме того, есть множество других ответов на вопросы о постоянных ссылках в WordPress здесь, в ответах WordPress; некоторые из них также могут вам помочь, в произвольном порядке:
Настройка WordPress с пользовательскими постоянными ссылками и без файла .htaccess?
WordPress переопределяет переменные GET (идентификатор страницы), установленные в HTACCESS?
Минимальная настраиваемая структура постоянных ссылок?
Пользовательское правило перезаписи типа записи для автора и подкачки?
Создание 301 Перенаправления для URL-адресов Сообщений, Страниц, Категорий и изображений?
Заставьте URL-адрес веб-сайта включать "www" и быть прописным?
Я сделал все, что написал Ян Фабри, но когда я звоню:
http://www.mysite.com/customPostTypeSlug/page/id
Перенаправление Wordpress (301) меня на:
http://www.mysite.com/customPostTypeSlug/page
Мое правило (вызывается действием "инициализации"):
add_rewrite_rule(
'customPostTypeSlug/page/([^/]+)/?' ,
'index.php?customPostTypeSlug=page&id=$matches[1]',
'top'
);
Затем я смываю его.
Я меняю постоянную ссылку с %category%/%postname%
на %postname%
и, кажется, работает.