Как смягчить зависящее от сервера поведение для 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']потому что кажется, что вам нужно второе в ваших заявлениях

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]