Как исправить 404 ошибку в WordPress

Как исправить 404 ошибку в WordPress
Как исправить 404 ошибку в WordPress

С выходом WordPress 3.0 появилась возможность добавлять “Пользовательские типы постов” в темы WordPress, что является очень ценным инструментом, который я использовал во многих созданных мною темах WordPress. К настоящему времени пользовательские типы постов стали чрезвычайно популярными и используются почти в каждой теме WordPress. Но каждый, кто работал с пользовательскими типами постов, наверняка сталкивался с ужасной ошибкой 404 Not Found при попытке получить доступ к посту из типа поста в тот или иной момент. К счастью, почти всегда есть простое решение для устранения этих ошибок. Ниже я перечислил некоторые из наиболее распространенных проблем, возникающих у людей с пользовательскими типами постов, и причины, по которым они могут получать эти ошибки. Надеюсь, они помогут хотя бы нескольким людям.

Это, вероятно, одна из самых распространенных причин, по которой люди получают 404 ошибку в пользовательских типах постов, и я сталкивался с ней много раз. Я видел много способов устранения этой проблемы, например, промывка правил перезаписи (что я не рекомендую), но лично мне больше всего помогло следующее простое решение:

Решение:

  • Установите пользовательскую структуру пермалинка (например, %postname%).
  • Нажмите Сохранить
  • Проверьте, возвращают ли ваши страницы с одним пользовательским постом страницу с ошибкой 404.
  • Если да, вернитесь назад и измените пермалинки на стандартные и сохраните.
  • Теперь попробуйте снова установить пользовательский пермалинки и сохранить.
  • Возвращение назад и вперед обычно помогает исправить ошибки, и я добился большого успеха с этим методом.

Теперь, на некоторых серверах, если ваши права доступа установлены неправильно, этот метод может не сработать, и вам придется обновить файл .htaccess вручную. Для этого вам нужно будет войти на свой сайт через FTP или SFTP и через браузер перейти в корневой каталог WordPress (там же, где находится файл wp-config.php и папка wp-content). Здесь вы должны найти файл .htaccess, который вы можете изменить (если вы его не видите, убедитесь, что в вашей FTP-программе включена опция отображения скрытых файлов, а если ее просто нет, то создайте ее). Теперь убедитесь, что файл содержит основной код WordPress, как указано в документации WordPress, который выглядит следующим образом:

# 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

Важно: Если вы изменяете существующий файл .htaccess, обязательно сначала создайте резервную копию файла на вашем компьютере на случай, если вы что-то испортите.

Проверьте, нет ли конфликта slug (наличие страницы с тем же slug, что и тип вашего поста).

Еще одной причиной ошибки 404 может быть то, что у вас есть главная страница для отображения вашего типа поста, и она имеет тот же slug, что и ваш реальный тип поста. Например, если у вас есть тип поста под названием “портфолио”, и у вас также есть главная страница “Портфолио”, и обе они имеют slug “портфолио” (другими словами, чтобы получить доступ к посту портфолио, вы перейдете на site.com/portfolio/sample-post), это создает конфликт, вызывающий 404 ошибку на постах вашего единственного типа поста. Вот почему вы часто видите, что для постов типа портфолио для единственного словаря используется слово “проекты” или “портфолио-элемент”.

Решение:

  • Вы можете изменить название страницы, чтобы оно отличалось от названия пользовательского типа поста.
  • Вы можете изменить slug вашего пользовательского типа поста, что делается путем изменения параметра перезаписи при регистрации вашего пользовательского типа поста.

Правила перезаписи с автоматической промывкой (для разработчиков)

Еще одна причина ошибок 404 – при регистрации нового типа поста необходимо “промыть” правила перезаписи в WordPress. Это можно сделать, перейдя в Настройки > Permalinks и нажав кнопку сохранения (об этом говорилось в первом разделе данного поста). Если вы работаете над пользовательской темой или плагином с зарегистрированными типами постов, вы можете рассмотреть возможность автоматической промывки правил перезаписи для конечного пользователя, когда он активирует вашу тему или плагин, чтобы предотвратить любые ошибки 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();
}
clickfraud, ООО “ИНТЕРНЕТ ЗАЩИТА”, ИНН 7806602123, ОГРН 1227800111769, info@clickfraud.ru
Просмотров: 0