Как использовать фильтр «http_request_host_is_external»
2 ответ
- голосов
-
- 2013-11-14
Вы можете сделать это:
add_filter( 'http_request_host_is_external', '__return_true' );
Однако учтите,что это отключает эту функцию безопасности.Если вы знаете,что хост или URL-адрес не будут меняться и всегда будут такими,вы можете быть в большей безопасности,проверив это явно:
add_filter( 'http_request_host_is_external', 'allow_my_custom_host', 10, 3 ); function allow_my_custom_host( $allow, $host, $url ) { if ( $host == 'my-update-server' ) $allow = true; return $allow; }
You can do this:
add_filter( 'http_request_host_is_external', '__return_true' );
However, note that this disables this security feature. If you know the host or url isn't going to change and is always going to be that, you can be more secure by checking for that explicitly:
add_filter( 'http_request_host_is_external', 'allow_my_custom_host', 10, 3 ); function allow_my_custom_host( $allow, $host, $url ) { if ( $host == 'my-update-server' ) $allow = true; return $allow; }
-
Какие 3-й и 4-й аргументы в пользу (,,10,3)?What are the 3rd and 4th arguments for (,,10,3)?
- 0
- 2013-11-15
- Jack Slingerland
-
10 - это приоритет фильтра (10 - настройка по умолчанию),а 3 - это количество аргументов,передаваемых функции фильтрации (по умолчанию 1).Вот почему мне пришлось добавить сюда 10,3,потому что я хочу,чтобы функция получала переданные ей значения $ host и $ url.The 10 is the priority of the filter (10 is the default setting), and the 3 is the number of arguments to pass to the filter function (the default is 1). This is why I had to add the 10, 3 here, because I want the function to get the $host and $url values passed to it.
- 1
- 2013-11-15
- Otto
-
- 2013-11-14
Я,видимо,немного поджел.Это позаботилось обо всем за меня:
add_filter( 'http_request_host_is_external', function() { return true; });
I'm apparently a little rusty. This took care of it for me:
add_filter( 'http_request_host_is_external', function() { return true; });
Мне очень трудно использовать фильтр
http_request_host_is_external
. Для некоторой предыстории я пытаюсь настроить отдельный сервер для обработки частных обновлений плагинов и тем. Проблема в том,что он находится на отдельном сервере,поэтому функция Wordpresswp_http_validate_url
(wp-includes/http.php) прерывает запрос. Ниже приведены строки 481–503 этого файла.Вы заметите,что там есть комментарий,в котором упоминается,что мы должны иметь возможность применять фильтр и делать внешние запросы,но то,что я пытаюсь сделать,похоже,не работает.
Я думал,что если я установлю фильтр в основном файле своего плагина,он позаботится об этом,но я думаю,что проблема в том,что внешний запрос происходит прямо в программе обновления Wordpress,так что,может быть,мой фильтр не применяется?