Домашня » WordPress » Переписування URL-адрес у WordPress Поради та плагіни

    Переписування URL-адрес у WordPress Поради та плагіни

    Найновіші оновлення WordPress дозволили розробникам швидко налаштувати свій персональний сайт. Оновити області теми, замінити віджети на бічній панелі, і навіть написати власні функції коду PHP. Простір величезний - і одна область популярності переписує досить постійні посилання на URL.

    Існує кілька методів, які можна використовувати для оновлення системи перезапису за замовчуванням WordPress. У цьому уроці я розповім про кілька прикладів і продемонструю, наскільки простим може бути цей процес. Вам знадобиться певне розуміння PHP, щоб стежити за тим, що відбувається в коді, але так легко копіювати і вставляти в свій шаблон, практично немає роботи.

    Розуміння WP_Rewrite

    Якщо ви взагалі знайомі з mod_rewrite на серверах Apache, то ви будете підбирати синтаксис перезапису WordPress. Їх система все ще побудована на вершині .htaccess файл, але всі правила закодовані в PHP. Це фактично полегшує процес, оскільки ми маємо більше контролю над написанням власних URL-адрес.

    Я рекомендую, щоб скопіювати сторінку класу $ wp_rewrite, оскільки вона має тонну інформації про цю тему. Є навіть невеликі приклади, які ми можемо послатися, щоб зробити все легше зрозумілим. Більшість коду можна записати безпосередньо у вашій темі functions.php файл. Давайте почнемо з перегляду перезаписів за замовчуванням, які вже включені в WordPress.

    Вміст правил $ wp_rewrite->

    Оголошуючи $ wp_rewrite class як глобальний ми маємо доступ до всіх внутрішніх даних. Коли ви додаєте власні правила, вони додаються до масиву з ім'ям $ wp_rewrite-> правила. Важливо пам'ятати про цю змінну, оскільки, ймовірно, вам доведеться посилатися на дані багато разів під час розробки.

    правила); ?>

    Я додав цей блок коду до моєї теми page.php файл. Він виведе великий масив даних, який виглядає як великий безлад. Але якщо ви Переглянути джерело на вашій сторінці, насправді, легко побачити, які правила перезапису співпадають з ім'ям файлу. Наприклад, давайте розглянемо правила для перезаписів категорій:

    [category /(.+?)/?$] => index.php? category_name = $ match [1] 

    Біт на лівій стороні в дужках - це наш Apache RewriteRule для пошуку. Починаючи з розділу / категорія / слідом за будь-яким рядком символів. Якщо це співпало, то сервер знає посилання index.php? category_name = при зміні змінної на кінці.

    Налаштування користувацьких дозволів

    У класі $ wp_rewrite існує так багато вмісту. Можна посилатися на багато інших властивостей, наприклад $ wp_rewrite-> category_base або $ wp_rewrite-> author_base для витягання структур URL-адрес за замовчуванням для цих сторінок. Але крім вилучення налаштувань WP за замовчуванням, ми можемо також побудувати наші власні правила.

    Відновлення бази автора

    Коли ви входите на сторінку налаштувань "Постійне посилання", ви маєте можливість скинути основи категорій і тегів. Проте опція скидання бази автора неприйнятна.

    Але ми можемо використовувати add_rewrite_rule () з кодексу WordPress для інтеграції деяких нових параметрів. У цьому випадку я замінений / автор / с / письменник / але ви можете використовувати будь-яку базу, яка вам подобається. Крім того, я скопіював деякі інші перенаправлення для сторінок автора та каналів RSS. Цей блок коду можна додати до файлу functions.php вашої теми.

    add_action ('init', 'add_author_rules'); function add_author_rules () add_rewrite_rule ("writer / ([^ /] +) /?", "index.php? author_name = $ відповідає [1]", "top"); add_rewrite_rule ("writer / ([^ /] +) / page /? ([0-9] 1,) /?", "index.php? author_name = $ match [1] & paged = $ matches [2] "," зверху "); add_rewrite_rule ("writer / ([^ /] +) / (канал | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ відповідає [1] & feed = $ збігається [2]", " зверху »); add_rewrite_rule ("writer / ([^ /] +) / feed / (канал | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ match [1] & feed = $ match [2]" , "зверху");  

    Цю функцію можна отримати навіть без використання змінної $ wp_rewrite. Деякі розробники подібні до цього методу, оскільки це простіше, ніж жорстке кодування з властивостями класу. Однак я також помітив, що цей метод не завжди надійний для деяких установок WordPress. Насправді є другий варіант, щоб додати ці правила на гачок після очищення .htaccess (див. Нижче).

    Автор бази використовує generate_rewrite_rules

    Написавши для цього методу, нам знову буде потрібно глобальний клас $ wp_rewrite. Потім я встановлюю назву нової змінної $ new_rules яка містить асоціативний масив даних. Мій приклад коду нижче просто переписує для основного розділу сторінки автора.

    функція generate_author_rewrite_rules () глобальна $ wp_rewrite; $ new_rules = array ("writer / ([^ /] +) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> rules;  

    Але якщо ми хочемо включити кілька сторінок і RSS-канали, ми можемо збільшити масив. У вас є можливість створити функцію PHP, щоб підштовхнути дані асоціативного масиву, які можуть бути занадто складними. Ми могли б також розділити блоки даних через коми, ведучи себе як окремі сутності в масиві. Перевірте мій оновлений код знову написаний у файлі functions.php.

    функція generate_author_rewrite_rules () глобальна $ wp_rewrite; $ new_rules = array ("writer / ([^ /] +) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1), "writer / ([^ /] +) / сторінка /? ([0-9] 1,) /? "=>" Index.php? Author_name = ". $ Wp_rewrite-> preg_index (1)." & Paged = ". $ Wp_rewrite-> preg_index (2), "writer / ([^ /] +) / (канал | rdf | rss | rss2 | atom) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2), "writer / ([^ /] +) / feed / (канал | rdf | rss | rss2 | atom) /?" => "index.php? author_name =". $ wp_rewrite- > preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> rules;  

    Пам'ятайте, що жоден з цих методів не буде працювати, доки ви не скинули оригінальні правила перезапису. Ви повинні зробити це в будь-який час, коли ви будете вносити зміни до цих функцій, але після цього ваші нові правила будуть триматися нескінченно довго.

    Очищення правил перезапису

    Всякий раз, коли ви здійснюєте оновлення коду перезапису URL, зміни не застосовуються негайно. Ви повинні очистити правила перезапису .htaccess, щоб новий код буде додано. Проте виконання на кожній сторінці init є надзвичайно марнотратним, оскільки воно записується до бази даних і жорстко оновлює файл .htaccess.

    Кращим методом є доступ до сторінки постійних сторінок в адміністративній панелі та повторне збереження змін. Це завжди викликає flush_rewrite_rules, тому вам ніколи не доведеться турбуватися про користувачів на інтерфейсі, які відчувають проблеми з завантаженням. А для збереження сторінки та оновлення всіх правил у вашій системі потрібно лише один раз. Але якщо це не спрацює, ви можете спробувати зателефонувати $ wp_rewrite-> flush_rules ();

    Використання не-WP-правил

    Всередині $ wp_rewrite клас ми маємо доступ до десятків властивостей. Одним з найбільш значущих варіантів є $ wp_rewrite-> non_wp_rules який збирає масив переадресацій, які не потрапляють у файл index.php.

    Це найчастіше використовується у розробці плагінів WordPress. Ви можете натиснути певний тип користувацької адреси URL (наприклад, / календар / червень-2012 /) на сервер вашого веб-сайту (/wp-content/plugins/calendarplug/myscript.php). Але, звичайно, для цього асоціативного масиву користувальницьких правил перезапису, крім плагінів, існують подальші використання. Я надав прекрасний приклад у контексті нижче.

    Маскування файлів теми

    Це загальна пропозиція, яку я часто бачу на форумах WordPress. В ідеалі ми хотіли б посилатися на деякі файли всередині / wp-content / themes / mytheme / папку з більш елегантною URL-адресою. Зауважте, що для зміни структури каталогів для цього потрібно інший набір перезаписів WordPress.

    Внутрішня система перезапису WordPress завжди штовхає вміст до одного файлу маршрутизації. У випадку за замовчуванням ми використовуємо index.php разом з будь-якими додатковими рядками запитів. Але щоб приховати наш стандартний каталог шаблонів (/ wp-content / themes / mytheme / *) нам потрібно буде відобразити багато різних файлів.

    add_action ('generate_rewrite_rules', 'themes_dir_add_rewrites'); функція themes_dir_add_rewrites () $ theme_name = next (вибухнути ('/ themes /', get_stylesheet_directory ())); global $ wp_rewrite; $ new_non_wp_rules = array ('css /(.*)' => 'wp-content / themes /'. $ theme_name. '/ css / $ 1', 'js /(.*)' => 'wp-content / themes / '. $ theme_name.' / js / $ 1 ',' images / wordpress-urls-rewrite /(.*) '=>' wp-content / themes / '. $ theme_name.' / images / wordpress-urls-rewrite / $ 1 ',); $ wp_rewrite-> non_wp_rules + = $ new_non_wp_rules;  

    Я написав нову функцію themes_dir_add_rewrites () витягти весь основний вміст з цих довших URL-адрес і перенаправити їх у серверну частину. Зверніть увагу, що ми використовуємо цю іншу таємничу властивість імені $ wp_rewrite non_wp_rules. Згідно з документами, це правила, які не спрямовуються до файлу index.php WP і будуть оброблятися на сервері.

    Те, що настільки велике в цих правилах, що не належать WP, полягає в тому, що ви все ще можете легко керувати старим методом URL. Нічого не заважає вам посилатися на:

    /wp-content/themes/mytheme/images/wordpress-urls-rewrite/logo.jpg.

    Але виглядає набагато приємніше, якщо ви можете вказати:

    /images/wordpress-urls-rewrite/logo.jpg замість цього.

    Корисні інструменти та плагіни

    Є лише кілька інструментів, які ви можете використовувати, якщо ви застрягли з кодуванням власних красивих URL-адрес. Процес дуже важко зрозуміти, тому не розчаровуйтеся, якщо ви боретеся пару тижнів. Я відчуваю, що зміст буде легше, оскільки ви проводите більше часу на практиці.

    Але для початку перевірте деякі з цих зручних інструментів перезапису та плагінів. Ви, напевно, не потребуватимете їх усіх, але приємно знайти таку велику базу розробників, яка працює навколо WP-перезаписів.

    Аналізатор Monkeyman Rewrite

    При першому стрибку в правила перезапису цей плагін є обов'язковим. Насправді це не змінює жодного з правил вашого веб-сайту - це лише дозволяє перевірити код і подивитися, які перенаправлення йдуть на які сторінки. Вона буде навіть працювати для тестування змінних користувацьких запитів для будь-яких типів спеціальних повідомлень.

    Переглядач AskApache RewriteRules

    Це схоже на додаток вище, але це не дає вам змогу перевірити власні правила. Замість цього плагін відображатиме всі WP-правила вашого веб-сайту за замовчуванням і де вони перенаправляються. Це буде включати в себе всі основні властивості $ wp_rewrite такі як налаштування постійної посилання та бази сторінок / категорій / тегів.

    WP htaccess Control

    Тут ви маєте інший набір правил для перенаправлення нових сторінок. Плагін має власну панель адміністрування, де можна редагувати змінні, такі як ваша авторська база, бази сторінок і навіть додавати власні правила .htaccess.

    Цей метод відрізняється від побудови власного методу за допомогою wp_rewrite. Однак це може бути простіше для технічних фахівців, які дійсно знають веб-сервери і відчувають себе зручніше безпосередньо в .htaccess.

    Перезаписати тестер правил

    Це насправді не WordPress плагін, але, безумовно, один зручний інструмент, щоб зберегти у файлі. Ви можете скопіювати правила перезапису та протестувати їх на своєму сайті, не редагуючи свій файл .htaccess. Це ідеальний метод для усунення помилок у вашому синтаксисі перед запуском в Інтернеті.

    DW ReWrite

    DW Rewrite - це дуже простий плагін, який створює 3 унікальні красиві URL-адреси відразу після встановлення. За замовчуванням він змінить посилання адміністратора, логіна та реєстрації / admin, / login, і / регістр відповідно.

    Це може бути великим, якщо вам потрібно швидко виправити блог, який містить декілька авторів. Зокрема, це приховує незручно заплутані посилання для реєстрації WordPress (/wp-login.php?action=register).

    Висновок

    Я сподіваюся, що цей навчальний посібник може навести кілька прикладів для того, щоб ви думали про перезаписи WordPress. CMS дуже популярний і розробники все ще виробляють нові функції щодня. Налаштування власних URL-адрес є такою величезною функціональністю на основі користувачів. Це дає вашому сайту власну унікальну присутність і брендинг порівняно з типовими параметрами.

    Якщо у вас виникли проблеми з правилами перезапису, ніколи не буде важко скасувати пошкодження. Просто видаливши функціональний код і очистивши ваші правила .htaccess, здається, нічого не змінилося. Обов'язково перевірте деякі інші подібні статті, які ви можете знайти на тему. І якщо у вас є якісь питання або коментарі, ви можете поділитися ними з нами в поштовій дискусійній області.