Как смягчить зависящее от сервера поведение для REQUEST_URI, чтобы использовать его для подавления определенного шорткода - PullRequest
0 голосов
/ 31 декабря 2018

Я заметил кое-что странное в отношении того, когда я вставил в свой код PHP следующую строку:

echo strpos($_SERVER['REQUEST_URI'], "/?s=");

Если введен следующий URL: https://s1.temporary -access.com / ~ allacros / devel/? s = Таити оператор 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 Ответ

0 голосов
/ 31 декабря 2018

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

...