
С выпуском WordPress 3.0 появилась возможность добавлять «Пользовательские типы сообщений» к темам WordPress, что является очень ценным инструментом, и я использовал его во многих темах WordPress, которые я создал. Прямо сейчас пользовательские типы сообщений стали чрезвычайно популярными и используются почти во всех темах WordPress. Но любой, кто работал с пользовательскими типами сообщений, вероятно, нашел рерeadful 404 Ошибка не найдена при попытке получить доступ к сообщению из типа сообщения в тот или иной момент. К счастью, почти всегда есть простое решение для исправления этих ошибок.
Ниже я перечислил некоторые из наиболее распространенных проблем, возникающих у людей с пользовательскими типами записей, и почему они могут получать эти ошибки. Надеюсь, они помогут хотя бы некоторым людям.
1. Проверьте настройки постоянной ссылки
Вероятно, это одна из наиболее распространенных причин, по которым люди получают 404 ошибки в своих пользовательских типах сообщений, и я сталкивался с этим много раз. Я видел много решений, таких как удаление правил перезаписи (которые я не рекомендую), но лично мне больше всего повезло со следующим решением:
Решение:
- Установите свою структуру постоянных ссылок (например,% postname%)
- Нажмите сохранить
- Посмотрите, возвращают ли ваши индивидуальные страницы публикации 404 страницы ошибок
- Если это так, вернитесь и измените постоянные ссылки на значения по умолчанию и сохраните
- Теперь попробуйте установить постоянную ссылку снова и сохраните
Приходя и уходя нормально, я исправил свои ошибки, и я очень успешно использовал этот метод.
Теперь на некоторых серверах, если ваши права доступа установлены неправильно, это может не сработать, и вам может потребоваться обновить файл .htaccess вручную. Для этого вам нужно будет зайти на свой сайт через FTP или SFTP и браузер в корневой каталог WordPress (там же, где находятся ваш файл wp-config.php и папка wp-content). Здесь вы должны найти файл с именем .htaccess, который вы можете изменить (если вы его не видите, убедитесь, что в вашей программе FTP включена опция показа скрытых файлов и если ее нет). Теперь убедитесь, что файл содержит основной код WordPress, как указано в документах WordPress, который выглядит следующим образом:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Важный: Если вы изменяете существующий файл .htaccess, сначала сделайте резервную копию файла на свой компьютер на случай, если он испортится.
2. Проверьте наличие конфликтов слагов (создайте страницу с тем же слагом, что и тип вашего поста)
Еще одна вещь, которая может вызвать ошибку 404, заключается в том, что у вас есть домашняя страница, на которой отображается сообщение типа публикации, и оно имеет тот же параметр, что и фактический тип сообщения. Например, если у вас есть тип записи под названием «портфолио», и у вас также есть домашняя страница «Портфолио» с фрагментом «портфолио» (другими словами, чтобы получить доступ к сообщению портфолио, перейдите по адресу site.com/portfolio/ sample-post) это создает конфликт, приводящий к 404 ошибкам в сообщениях одного типа. Вот почему вы часто обнаруживаете, что тип сообщения портфолио использует «проекты» или «элемент портфолио» для единственного слага.
Решение:
- Вы можете изменить имя страницы, чтобы отличаться от пользовательского типа сообщения
- Вы можете изменить свой пользовательский тип записи, что можно сделать, изменив параметр rewrite при регистрации пользовательского типа сообщения.
3. Правила автоматической перезаписи загрузки (для разработчиков)
Другая причина ошибок 404 заключается в том, что каждый раз, когда регистрируется новый тип записи, вы должны «очистить» свои правила переписывания в WordPress. Это можно сделать, перейдя в Настройки> Постоянные ссылки и нажав кнопку Сохранить (упомянуто в первом разделе этого поста).
Если вы работаете над пользовательской темой или плагином с зарегистрированными типами постов, вы можете рассмотреть возможность автоматического удаления правил перезаписи для конечного пользователя, когда они активируют вашу тему или плагин, чтобы избежать ошибок 404. Ниже приведен пример кода, который вы можете использовать:
// Code for themes
add_action( 'after_switch_theme', 'flush_rewrite_rules' );
// Code for plugins
register_deactivation_hook( __FILE__, 'flush_rewrite_rules' );
register_activation_hook( __FILE__, 'myplugin_flush_rewrites' );
function myplugin_flush_rewrites() {
// call your CPT registration function here (it should also be hooked into 'init')
myplugin_custom_post_types_registration();
flush_rewrite_rules();
}
У вас есть другая ошибка или решение?
Если у вас есть какая-либо другая ошибка или у вас есть лучшее решение, чем у меня, пожалуйста, прокомментируйте ниже и дайте мне знать. Это не только поможет мне, но, вероятно, поможет другим людям, которые ищут решение своей проблемы. Спасибо!
