Wordpress 3.1.2 Сломаны постоянные ссылки
У меня есть свежая установка WordPress 3.1.2 (не обновлена, но установлена заново), не содержащая никаких плагинов.
У меня есть то, что, кажется, из-за того, что я нагуглил довольно распространенную проблему, но ни одно из решений, которые я не могу найти для меня.
У меня есть пользовательская таксономия и пользовательский тип записи, код из моего functions.php:
register_post_type( 'product', array(
'labels' => array(
'name' => __( 'Products' ),
'singular_name' => __( 'Product'),
'add_new_item' => __( 'Add New Product'),
'add_new' => __( 'Add a Product'),
'edit_item' => __( 'Edit Product'),
'new_item' => __( 'New Product'),
'view_item' => __( 'View Product'),
'search_items' => __( 'Search products' ),
'not_found' => __( 'No products found' ),
'not_found_in_trash' => __( 'No products found in Trash' )
),
'public' => true,
'supports' => array(
'title',
'editor'
),
'has_archive' => true,
'can_export' => true
));
register_taxonomy( 'product_category', 'product', array(
'hierarchical' => true,
'labels' => array(
'name' => 'Product Categories',
'singular_name' => 'Product Category',
'search_items' => __( 'Search Product Categories' ),
'all_items' => __( 'All Product Categories' ),
'parent_item' => __( 'Parent Product Category' ),
'parent_item_colon' => __( 'Parent Product Category:' ),
'edit_item' => __( 'Edit Product Category' ),
'update_item' => __( 'Update Product Category' ),
'add_new_item' => __( 'Add New Product Category' ),
'new_item_name' => __( 'New Product Category Name' ),
'menu_name' => __( 'Product Categories' ),
),
'public' => true,
'rewrite' => array(
'hierarchical' => true
)
));
Проблема в том, что когда я иду к product_category
на странице архива, например http://example.com/dairy-industry, я получаю 404. Я пытался исправить ошибки, включая
- каждая комбинация
rewrite
аргументы наregister_taxonomy
код - повторное сохранение постоянных ссылок
- отключение постоянных ссылок, сохранение, затем повторное включение
- выше, но сначала удаляя файл.htaccess с сервера
- выше, но сначала удаляем опцию rewrite_rules из таблицы wp_options
- с установленной опцией категории и базы тегов (и пустым)
У меня также нет $wp_rewrite->flush_rules() в моей теме.
Самое разочаровывающее то, что в разное время в моих исправлениях, и без какого-либо шаблона, который я могу определить, страницы архива пользовательских таксономий снова начинают работать, но обычные страницы вместо этого дают мне 404 секунды. Они никогда не работают в одно и то же время, и я не могу понять, какие шаги будут воспроизводимо выполнять ту или иную работу. Кажется, это совершенно случайно.
Для дальнейшего интереса, когда страницы архива пользовательских таксономий не работают, одна из них (dairy-industry
) перенаправляет на пулю одноименного, но другого (2011/04/dairy-industry-products
) пост, прежде чем дать мне 404.
Я рад поделиться любым кодом, который может быть полезным, просто спросите.
Может ли кто-нибудь помочь мне разобраться в этой загадочной головоломке?
4 ответа
Мне помог этот ответ: http://www.zeitblog.com/273/internet-2/word-press-permalinks-broken-fro-category-and-tags-404-error-page-not-found/
Просто проверьте свои плагины и, если у вас есть "Простые теги" или "Multipage Toolkit", отредактируйте плагины и замените:
$wp_rewrite->flush_rules();
с:
/* $wp_rewrite->flush_rules(); */
После этого перейдите на страницу с вашими ссылками и обновите их... дважды. Работал как шарм.
У меня были некоторые проблемы с этим раньше. Я обнаружил, что если у вас есть собственный тип записи с тем же именем, что и у одного из ваших слагов, это может вызвать огромные проблемы! Это может быть то, что вам нужно учитывать.
Теперь я использую плагин для создания своих пользовательских типов записей, так как он имеет встроенные поля для структуры URL. Этот плагин называется CMS Press.
Когда я впервые столкнулся с этой проблемой 404 с постоянными ссылками, я был в бешенстве. Это повлияло на все мои собственные сайты и несколько, которыми я управляю. Сотни людей использовали функцию исправления, которую я закодировал... и затем отвечал на различные особые случаи от пользователей... мы усовершенствовали ее для плагина, который вы упомянули.
Исходная статья находится здесь: http://wpcodesnippets.info/blog/how-to-fix-the-wp-3-1-custom-permalinks-bug.html
По моим оценкам, эта ошибка повлияла на тысячи сайтов WP. Но официальные разработчики отказались рассматривать это в любых последующих обновлениях. К счастью, плагин должен работать вечно.
Что касается ваших случайных 404 для новых постов, мне особенно любопытно, если вы обнаружите преступника. Вот одна вещь, чтобы попробовать. Как только это произойдет с новым сообщением, откройте ваш сайт в браузере, который вы обычно не используете... и посмотрите, сможете ли вы оттуда щелкнуть ссылку на новое сообщение.
Конечно, старые плагины, которые изменяют структуру постоянных ссылок или получают к ней доступ, будут нуждаться в незначительных модификациях, пока WP не решит проблему.
В любом случае, я рад, что плагин помог.
Я столкнулся с этой проблемой, которая появилась только после обновления до 3.1.2 с 3.1 (мы пропустили 3.1.1). Я получаю ответ 404 для пользовательских типов записей и везде, где было применено пользовательское правило перезаписи (например, пользовательские ссылки каналов).
Мне удалось заставить его работать достаточно хорошо с этим плагином:
http://wordpress.org/extend/plugins/wcs-custom-permalinks-hotfix/
Тем не менее, я все еще получаю эти страницы 404'время от времени - я подозреваю, когда добавляется новый пост. Когда это произойдет, я смогу снова заставить их работать, перейдя на страницу настроек постоянной ссылки и просто нажав "Сохранить".
Обязательно проверьте ваши правила htaccess - на сайте для плагина есть много информации и рекомендуемые правила htaccess для одно- и многосайтовых настроек:
http://wpcodesnippets.info/blog/wcs-custom-permalinks-hotfix.html