У WordPress URL-адреси не відображаються у маршрутах. Вони відображають запити до бази даних.
Під час використання WordPress у режимі постійних посилань "за замовчуванням" у вас є набір змінних у головному запиті URL-адреси, наприклад? P = 1 або? Page = 234 тощо. Є також? S = пошук та багато інших.
Якщо ви використовуєте "досить" постійні посилання, тоді створюється великий набір правил під назвою "правила перезапису", які безпосередньо відображають різні шаблони URL-адрес на цей самий набір параметрів URL-адреси. Так URL-адреса, як / 2014/04/12 / приклад, буде відображатись до? Year = 2014 & month = 04 & day = 12 & postname = приклад чи подібний. Отже, наступне стосується і цього, після цього картографування буде зроблено.
Ці змінні по суті керують основним екземпляром класу WP_Query. Клас WP_Query містить всю інформацію, яка будує запит до бази даних, щоб отримати "повідомлення" з бази даних. Різні параметри, що передаються в нього, керують тим, який тип запиту він будує та які дані він отримує.
Дивіться, все, що може відобразити WordPress, по суті є "дописом". Блог - це серія публікацій у зворотному часовому порядку. "Сторінка" - це статична публікація з визначеним іменем. "Спеціальний тип публікації" - це саме те, що воно звучить, "повідомлення" зі спеціальним типом, який ви визначаєте. Усі основні запити для відображення чого-небудь у WordPress отримують деякий підмножина публікацій з таблиці wp_posts.
WP_Query - це те, що робить це. А параметри з URL-адреси надсилаються безпосередньо в цей основний запит і використовуються там.
Потім тема визначає, який шаблон використовувати на основі того, що запит повертається. Якщо ви запитали / категорію / приклад, то це стає? Category_name = example, що означає, що основний масив $ wp_query-> query_vars отримає цю інформацію, і WP_Query витягне останні X публікації для категорії "приклад", і це встановить його прапор is_category на істину.
Завантажувач шаблонів запуститься після цього, побачте, що is_category () повертає true, і вирішить вибрати шаблон категорії, тому він буде шукати категорію-example.php і повернутися до категорії.php тощо, відповідно до Шаблону Ієрархія.
Отже, питання, якщо ви хочете змінити, як працюють URL-адреси, простий: чи потрібно змінити URL-адреси, або на що вони відображені? Оскільки URL-адреси не відображаються у функціях, вони відображаються до параметрів, які керують запитом. Якщо ви хочете, щоб URL-адреса коригувала цей основний запит, це дещо інший процес, ніж якщо ви хочете, щоб спеціальна URL-адреса запускала якийсь інший спеціальний код.
І щоб відповісти на ваше конкретне питання в коментарях: "чи не буває випадків, коли ви насправді не хочете показувати пости?" Ні, немає. Все - посада. Весь вміст зберігається в публікаціях. Якщо ви хочете зберігати вміст в іншому місці та бути іншим, тоді ви можете це зробити, але це складніше, бо, чесно кажучи, зазвичай це не потрібно. Якщо у вас є спеціальний вміст, створіть спеціальний тип публікації, збережіть свій вміст як публікацію з цим типом, нанесіть на нього шаблон URL-адреси. Легко.