Нужна помощь с дружественными 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 , но не стал мудрее.

У меня есть два вопроса:

  1. Есть ли какой-либо смысл в изменении вышеуказанного URL-адреса в отношении SEO
  2. Как я могу получить "красивый" 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?
Author: hakre, 2010-11-02

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;
}
 4
Author: Jan Fabry, 2010-11-02 21:44:14

Сначала у меня вопрос: Как вы получаете 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-адресом для каждой страницы, и это может замедлить отключите свою систему. Тем не менее, если у вас всего несколько страниц и у вас нет сайта с высоким трафиком, я считаю, что не стоит беспокоиться об этом.

Screenshot showing what Pages in WordPress are, i.e. $post_type=='page'
( источник: mikeschinkel.com)

Теперь перейдем к вашим вопросам.

1.) Есть ли какой-либо смысл в изменении вышеуказанного URL-адреса в отношении SEO

Да. Очистка URL-адреса улучшает плотность ключевых слов. Тем не менее, на мой взгляд в SEO есть гораздо больше, чем просто поиск движок видит и делает ваши URL-адреса более дружелюбными, что придаст людям больше уверенности в них и повысит вероятность того, что они будут ссылаться на ваш сайт в блогах и делиться вашими ссылками в Twitter, Facebook и других местах. Это создает два преимущества: больше ссылок, которые видят поисковые системы, и больше информации от совместного использования.

Лично мне нравится думать об этом как о том, как одеваются; если вы действительно неряшливы, то у людей будет более низкое подсознательное мнение о вас, чем если бы вы были дотошны. Я думаю то же самое относится и к URL-адресам; если у вас чистые, удобные для пользователя URL-адреса, ваш дом, похоже, в порядке; если у вас неаккуратные URL-адреса, ваш сайт просто не будет "чувствовать" то же самое, опять же IMO. (Неприятные URL-адреса - одна из причин, по которой я ненавижу использовать LinkedIn. Я думаю, что они были бы более успешными, если бы обращали внимание на URL-адреса, как, например, Твиттер.)

2.) Как я могу получить "красивый" URL-адрес?

Я думаю, что эта статья и/или эта страница Кодекса должны быть способны помочь?

  • Оптимизация постоянных ссылок WordPress

  • Подпанель постоянных ссылок настроек (в Кодексе)

В основном вам нужно установить шаблон постоянных ссылок, а затем сохранить их. Возможно, вам придется использовать FTP, чтобы изменить настройки разрешений на .htaccess, прежде чем WordPress сможет сохранить их для вас. Надеюсь, этого снимка экрана будет достаточно, чтобы проиллюстрировать, что вам нужно сделать:

Screenshot showing how to Set Permalinks in WordPress
( источник: mikeschinkel.com)

Дайте мне знать, если это ответ на ваш вопрос, и если нет, то где вы застряли.

Другие ответы по постоянной ссылке

Кроме того, есть множество других ответов на вопросы о постоянных ссылках в WordPress здесь, в ответах WordPress; некоторые из них также могут вам помочь, в произвольном порядке:

  • Настройка WordPress с пользовательскими постоянными ссылками и без файла .htaccess?

  • WordPress переопределяет переменные GET (идентификатор страницы), установленные в HTACCESS?

  • Минимальная настраиваемая структура постоянных ссылок?

  • Пользовательское правило перезаписи типа записи для автора и подкачки?

  • Создание 301 Перенаправления для URL-адресов Сообщений, Страниц, Категорий и изображений?

  • Заставьте URL-адрес веб-сайта включать "www" и быть прописным?

 3
Author: MikeSchinkel, 2019-03-30 22:06:30

Я сделал все, что написал Ян Фабри, но когда я звоню:

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% и, кажется, работает.

 0
Author: Merlinox, 2012-11-02 21:09:52