Как смягчить зависящее от сервера поведение для REQUEST_URI, чтобы использовать его для подавления определенного шорткода
Я заметил кое-что странное в отношении того, когда я вставил следующую строку в мой PHP-код:
echo strpos($_SERVER['REQUEST_URI'], "/?s=");
Если введен следующий URL: https://s1.temporary-access.com/~allacros/devel/?s=tahiti оператор echo возвращает '16'. Это ожидаемое поведение.
Однако, если введен следующий URL: http://stage.world-of-waterfalls.com/?s=tahiti оператор echo возвращает '0'.
Это неожиданное поведение, и оно имеет последствия в том смысле, что я не могу использовать следующий код для подавления шорткода, который вызывает ошибочный артефакт кнопки, вызванный этим шорткодом для страниц результатов поиска (единственный случай, который я видел, когда пытался положитесь на это)...
if( !( empty( strpos($_SERVER['REQUEST_URI'], "/?s=") ) ) )
remove_shortcode('uwr-button');
Кто-нибудь знает, почему это происходит? И как исправить код, чтобы он не зависел от сервера, на котором он включен (при условии, что это проблема)?
1 ответ
Согласно документации, strpos возвращает false
если игла не была найдена. Таким образом, вы можете переписать ваше состояние следующим образом:
if (strpos($_SERVER['REQUEST_URI'], "/?s=") !== false) {
remove_shortcode('uwr-button');
}
Также вы можете проверить s
ключ существования в $_GET
массив:
if (array_key_exists('s', $_GET)) {
remove_shortcode('uwr-button');
}
И маленький совет: постарайтесь понять разницу между $_SERVER['REQUEST_URI']
а также $_SERVER['QUERY_STRING']
потому что кажется, что вам нужно второе в ваших заявлениях