Итак, я создал собственный специальный фильтр do_parse_request
, и он работает фантастически. Перехватывает правильные запросы на возврат правильного контента, а другие запросы продолжают обычным способом WordPressy. По сути, я угоняю определенные URL-адреса, чтобы сделать что-то нестандартное вне обычной маршрутизации WordPress.
Кроме ... Ответ всегда 404, несмотря на то, что он правильный.
Есть ли что-то, чего мне не хватает, который нужно установить в WordPress, если обычный запрос не выполнен?
add_filter('do_parse_request', function($do_parse, $wp) {
//... bunch of code to dynamically determine
//if a page belongs to custom source, which works
if ($ismypage){
remove_action('template_redirect', 'redirect_canonical');
$wp->query_vars['post_type'] = 'my_post_type';
$wp->query_vars['name'] = $mypagename;
return false;
//always a 404, even though I get expected content...
}
return $do_parse;
}
Пробовал:
Немного ковыряясь, смотрел на WP_REST_Response прямо перед возвратом false. Получение:
$testResponse = new WP_REST_Response();
var_dump($testResponse->get_headers());
//empty array
var_dump($testResponse->get_status());
//int 200
Поиск в Интернете показал буквальный метод status_header
. Даже попробовал header("HTTP/1.1 200 Success")
//... right before return false
status_header(200);
//still gets 404 on the page, still gets correct content
header("HTTP/1.1 200 Success");
//same issue
Я начинаю думать, что это не причина моей проблемы ...