Я заметил кое-что странное в отношении того, когда я вставил следующую строку в мой код 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');
Кто-нибудь знает, почему это происходит? И как исправить код, чтобы он не зависел от сервера, на котором он включен (при условии, что это проблема)?
Согласно документации, 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']
потому что кажется, что вам нужно второе в ваших заявлениях
Других решений пока нет …