Поддержка Проблемы и решения Подскажите как сделать с модреврайтом вывод компаний

  • У меня есть задача, установить в вордпресс на одной странице список городов, и когда мы переходим на них, то там должны стоять предприятия из этих городов. Как бы плагины под вордпресс я не пишу, понимаю что это плохо, но так уж сложилось. Сами таблицы у меня в базе готовы, города я вывела, да и компании тоже выведу, но одна проблема стоит передо мной, значит по урлам должно выходить
    имя_сайта/moving-companies-by-city/город1
    имя_сайта/moving-companies-by-city/город2
    и так далее. И на этих ссылках уже стоят комании, совать все города как страницы в Pages не хочется, тем более что они будут менятся, что то удалятся, чтото добавлятся, хочется сделать как то автоматически с помощью 1 страницы. То есть какая переменная города передана, те компании и выходят. Попробовла запихать в файл htaccess строку
    RewriteRule ^(.*)moving-companies-by-city/([a-z0-9_]+)/*$ $1index.php
    так у меня все улетело. Подскажите через что такое можно реализовать в вордпрессе.

Просмотр 15 ответов — с 1 по 15 (всего 16)
  • Модератор Yuri

    (@yube)

    Спасибо, вижу что явно по моей теме, осталось понять англ язык)

    Модератор Yuri

    (@yube)

    Всё самое главное там на php написано 🙂

    Берете рабочий, по словам TheMarco, вариант

    function add_my_var($public_query_vars) {
        $public_query_vars[] = 'myvar';
        return $public_query_vars;
    }
    
    add_filter('query_vars', 'add_my_var');
    
    function do_rewrite() {
        add_rewrite_rule('mypage/([^/]+)/?$', 'index.php?pagename=mypage&myvar=$matches[1]','top');
    }
    
    add_action('init', 'do_rewrite');

    — меняете mypage на moving-companies-by-city (используется реальный слаг страницы) и myvar на gorod (это чтобы потом понять, что за фигня:)))
    — вставляете полученный код в functions.php Темы
    В обработчике получаете город вызовом get_query_var('gorod')

    Где-так 🙂

    хм.. ну я запихала вот такое

    function add_my_var($public_query_vars) {
    	$public_query_vars[] = 'city';
    	return $public_query_vars;
    }
    
    add_filter('query_vars', 'add_my_var');
    
    function do_rewrite() {
        add_rewrite_rule('moving-companies-by-city/([^/]+)/?$', 'index.php?pagename=mypage&city=$matches[1]','top');
    }
    
    add_action('init', 'do_rewrite');

    вызов функций идет, я проверила.. только че то толку нету, все равно нет страницы 404

    наверное в add_rewrite_rule мудрилка у меня какая то

    Модератор Yuri

    (@yube)

    Тщательней надо! …pagename=mypage

    хм.. страшно даже спросить.. видимо pagename=mypage это что то не то да… ну например pagename=movingcity (это шаблон для этой страницы ничего не дает, все так и идет ошибка 404), page=27 тоже..

    Модератор Yuri

    (@yube)

    В строке
    add_rewrite_rule('mypage/([^/]+)/?$', 'index.php?pagename=mypage&myvar=$matches[1]','top');

    два раза используется слаг страницы. Вы поменяли первое вхождение и пропустили второе. Видимо, поэтому оно и кидает на несуществующую mypage.

    PS Это всё я теоретически рассуждаю, живого экземпляра с таким кодом у меня нет.

    хотя видимо так надо
    pagename=moving-companies-by-city

    убрала все тире с moving-companies-by-city — начало работать, вроде.. по крайней мере ошибки 404 нет, теперь ловлю переменную, что то get_query_var(‘city’) в условии if не работает пока что..

    Ну и переменную поймала) УРА! спасибо большое! только как блин теперь с тире то сделать))) счас еще посижу подышу над кодами

    Модератор Yuri

    (@yube)

    Получилось? Поздравляю!

    Добавил тему себе в «фавориты» — вдруг еще пригодится.

    Да, только вот с тире pagename не проходит, дает ошибку 404, если только другую страницу создать и уже с city возится там, просто не люблю плодить страницы, файлы..

    Модератор Yuri

    (@yube)

    Это же слаг? Поменяйте его на без минусов. На заголовок и прочее это не повлияет, только на url.

    А еще, по идее, pagename=mypage можно заменить на page_id=123. Это если минусы мешают во второй части.

    Да на id я пробовала до этого, у меня браузер оказывается не сразу схватывает изменения на локале. я с номером делала до этого, а оно старое тянуло. с id тоже работает и это правльнее) спасибо за участие и помощь!

Просмотр 15 ответов — с 1 по 15 (всего 16)
  • Тема «Подскажите как сделать с модреврайтом вывод компаний» закрыта для новых ответов.