Если вы можете изменить фильтр, то вы можете обнаружить API REST внутри функции фильтра, например:
function my_custom_filter(){
if (! defined("REST_REQUEST")) {
echo '<div class="my-class">HTML Content</div>';
}
}
add_filter ('the_excerpt', 'my_custom_filter' );
Константа REST_REQUEST
определяется только внутри запроса, который был обработанREST API.Таким образом, с помощью приведенного выше кода, если запрос обрабатывается обычным циклом запроса WP, константа не будет определена, поэтому добавленный нами оператор if
оценивается как true
, а echo
будет выполняться как обычный,Если константа определена , то if
будет оцениваться как ложное, и фильтр не добавит никакого вывода в ответ.
См. https://wpseek.com/constant/rest_request/
ОБНОВЛЕНИЕ : хотя приведенный выше код будет работать, я думаю, что мы можем добиться большего успеха.
Проблема в том, что если у вас много фильтров, каждый из них должен дублировать оператор if
иваш код засоряется чеками на REST_REQUEST
, которые
Вместо этого мы можем ввести проверки REST_REQUEST
ранее в циклезаботясь о коде, который добавляет фильтр .
Это будет выглядеть так:
function my_custom_filter(){
echo '<div class="my-class">HTML Content</div>';
}
if (! defined("REST_REQUEST")) {
add_filter ('the_excerpt', 'my_custom_filter' );
//add other HTML filters here
} else {
//attach REST API actions
}
Это похоже на небольшое изменение (если вы его поймаетерано, когда количество фильтров невелико), но это потенциально приносит некоторые большие преимущества:
он сохраняет REST_REQUEST
проверкиl в одном месте: ремонтопригодность
фильтрам не нужно знать или заботиться о том, является ли это REST_REQUEST
или нет - если их вызывают, онихорошо идти.Сохраняя это простым.
вы можете потенциально делать другие вещи, такие как ведение журнала или проверки доступа на основе ролей в этом месте: расширяемость
Это относительно легкое изменение, которое можно внести на ранней стадии в вашем приложении, но оно становится более сложным и подверженным ошибкам, когда вы добавляете дополнительные фильтры и действия.Всегда лучше делать это правильно с первого раза!