При парсинге появляется ошибка 500 в WordPress
Написал парсер страниц, но возникла непонятная проблема.
На сервер установлен curl php(проверял). В functions.php я написал метод, в который передается нужный url, а в методе сделал парсер.
Тут появляется проблема. Когда я запускаю сайт на хостинге timeweb, у меня сайт просто не загружается - выдает ошибку 500. Если убираю этот метод, проблема пропадает. Подумал, что проблема может быть в сервере. Проверил, установлен ли php curl. Увидел, что да, установлен. Далее решил проверить вне functions.php работу парсера и - о чудо! - он заработал. Но почему он не работает в functions.php? Кто-то сталкивался с подобной проблемой? Также пробовал на локальном хостинге и в файле функций он работает.
Пробовал также метод в WordPress wp_remote_get($site);, но он также не работает.
function get_partner_price($site, $partner){
$html = wp_remote_get($site);
$html = $html['body'];
switch($partner){
case 'expert':
$result = [];
$classname = 'product__price-count';
$domdocument = new DOMDocument('1.0', 'utf-8');
@$domdocument->loadHTML($html);
$a = new DOMXPath($domdocument);
$spans = $a->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]");
for ($i = $spans->length - 1; $i > -1; $i--) {
$result[] = utf8_decode($spans->item($i)->firstChild->nodeValue);
}
$price = $result[0];
if($price == null) { return null; }
break;
case 'spets':
$doc = new DOMDocument();
@$doc->loadHTML($html);
$price=$doc->getElementById('priceOffers')->nodeValue;
if($price == null) { return null; }
break;
case 'sirius':
$result = [];
$classname = 'price-opt';
$doс = new DOMDocument('1.0', 'utf-8');
@$doс->loadHTML($html);
$a = new DOMXPath($doс);
$spans = $a->query(
"//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]/span"
);
for ($i = $spans->length - 1; $i > -1; $i--) {
$result[] = utf8_decode($spans->item($i)->firstChild->nodeValue);
}
$price = $result[12];
if($price == null) { return null; }
break;
default:
$price = null;
break;
}
return $price;
}