Я хочу, чтобы пользователь вводил любой URL-адрес, например:
mywebsite.com/helloworld
После, с PHP, я хотел бы взять слаг helloworld и распечатать его на странице.
По умолчанию Wordpress показывает страницу 404. Моя идея заключалась в том, чтобы отключить эту страницу, но я не уверен, есть ли лучшее решение.
Как я могу этого добиться?
Смысл «404» в том, что запрос не был найден, будь то жестко закодированная страница или CMS, управляемая БД, такая как WP. Просто показывать, что пользователь вводит в URL на странице, когда страница не найдена, кажется бессмысленным.
WordPress имеет определенный шаблон 404 (в любой теме). Почему бы не использовать это, чтобы сделать то, что вам нужно?
Пользователь должен иметь возможность перейти по ссылке на сайте. Например: http://www.mywebsite.com/land/[any slug] Я возьму slug и сделаю поиск. Если категория не найдена, я покажу некоторый произвольный текст, если он найден, отобразит категорию. Wordpress возвращает ошибку 404






404 - один из многих Коды состояния HTTP, и поэтому, если вы полностью удалите страницу, вам нужно будет отключить ее как в WordPress, так и на своем веб-сервере, например, Apache или Nginx. Это рекомендуется нет, поскольку это заставит браузеры отображать допустимые ошибки 404 с неконтролируемыми / нежелательными ответами.
Если ваш вопрос - «страница 404 по умолчанию / мои шаблоны ужасна, и я хочу ее изменить», обратитесь к Страница кодекса на пользовательской странице 404 или воспользуйтесь одним из многочисленных плагинов, предназначенных для шаблонов страниц ошибок.
Я бы также лично посоветовал не направлять страницы с ошибками на страницу по вашему выбору, например, на вашу домашнюю страницу. Это мало что делает, кроме как запутать людей, которые задаются вопросом, почему example.com/helloworld идет на example.com. С точки зрения программистов, это может добавить время к вашей разработке, поскольку вам может быть сложнее диагностировать Зачем, когда вы перенаправляетесь на вашу домашнюю страницу, а не с 404 или 500, каждый из которых сообщает вам разную информацию.
add_filter( 'pre_handle_404', function() {
# you can do anything you want here but the easiest and safest is
# wp_redirect( 'your url with query parameters from the failing 404 url' );
# exit();
return FALSE;
} );
Чтобы выйти из @magenta, вы также можете добавить к нему условия. Вот что я сделал:
add_action( 'pre_handle_404', function() {
global $wp_query;
if (!$wp_query->found_posts){
if ($wp_query->query['post_type']= = "clients"){
wp_redirect( '/login' );
exit;
}
}
return FALSE;
} );
Какую проблему вы пытаетесь решить, отключив страницу 404? Пользовательская страница 404 - это одно, полностью избавиться от 404 кажется проблематичным.