• Вопрос в первую очередь к модераторам, но и ко всем, кто отлично разбирается в WP.

    Есть код

    $params_arr = [
     "file1" => new \CURLFile($pic_url),
    ];

    Не могу понять, как мне его переделать, чтобы вместо CURLFile была штатная функция вордпреса и нужны ли какие-то аргументы?

    Нужно это потому, что модератор не пропускает код, требует отказаться от CURLFile

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Зачем файл нужен?

    @sazonische по АПИ отправляется на сервер. Далее массив вторым параметром в эту функцию:

    function response_to_serv($request_url, $postfields_arr = [ ], $headers_arr = [ ], $request_type = 'POST', $pwd_arr = [ ], $encode_type = 'json_encode', $timeout = 30, $proxy = '', $debug = false, $sep = PHP_EOL, $useragent = 'PHP Bot') {
    		if (!empty($this->get_debug())) {$request_url = $request_url.'?dbg='.$this->get_debug();}
    
    		/* 
    		 * if (!empty($pwd_arr)) {
    		 *	if (isset($pwd_arr['login']) && isset($pwd_arr['pwd'])) {
    		 *		$userpwd = $pwd_arr['login'].':'.$pwd_arr['pwd']; // 'логин:пароль'
    		 *		curl_setopt($curl, CURLOPT_USERPWD, $userpwd);
    		 *	}
    		 * }
    		 **/
    
    		$answer_arr = [];
    		$answer_arr['body_request'] = null;
    		if ($request_type !== 'GET') { 
    			switch($encode_type) {
    				case 'json_encode':
    					$answer_arr['body_request'] = json_encode($postfields_arr);
    					break;
    				case 'http_build_query':
    					$answer_arr['body_request'] = http_build_query($postfields_arr);
    					break;
    				case 'dont_encode':
    					$answer_arr['body_request'] = $postfields_arr;
    					break;
    				default:
    					$answer_arr['body_request'] = json_encode($postfields_arr);
    			}
    		}
    
    		$args = [
    			'body'			=> $answer_arr['body_request'],
    			'method'		=> $request_type,
    			'timeout'		=> $timeout,
    			// 'redirection' => '5',
    			'user-agent'	=> $useragent,
    			// 'httpversion' => '1.0',
    			// 'blocking'    => true,
    			'headers'     => $headers_arr,
    			'cookies'     => [ ],
    		];
    		$result = wp_remote_request($request_url, $args);
    
    		if (is_wp_error($result)) {
    			$answer_arr['errors'] = $result->get_error_message(); // $result->get_error_code();
    			$answer_arr['body_answer'] = null;
    		} else {
    			$answer_arr['status'] = true; // true - получили ответ
    			// Разделение полученных HTTP-заголовков и тела ответа
    			$response_body = $result['body'];
    			$http_code = $result['response']['code'];
    			$answer_arr['http_code'] = $http_code;
    			
    			if ($http_code == 200) {
    				// Если HTTP-код ответа равен 200, то возвращаем отформатированное тело ответа в формате JSON
    				$decoded_body = json_decode($response_body);				
    				$answer_arr['body_answer'] = $decoded_body;
    			} else {
    				// Если тело ответа не пустое, то производится попытка декодирования JSON-кода
    				if (!empty($response_body)) {
    					$decoded_body = json_decode($response_body);
    					if ($decoded_body != null) {
    						// Если ответ содержит тело в формате JSON, 
    						// то возвращаем отформатированное тело в формате JSON
    						$answer_arr['body_answer'] = $decoded_body;
    					} else {
    						// Если не удалось декодировать JSON либо тело имеет другой формат, 
    						// то возвращаем преобразованное тело ответа
    						$answer_arr['body_answer'] = htmlspecialchars($response_body);
    					}
    				} else {
    					$answer_arr['body_answer'] = null;
    				}
    			}
    			// Вывод необработанных HTTP-заголовков запроса и ответа
    			// $answer_arr['header_request'] = curl_getinfo($curl, CURLINFO_HEADER_OUT); // Заголовки запроса
    			$answer_arr['header_answer'] = $result['headers']; // Заголовки ответа
    		}
    
    		// var_dump($answer_arr['body_answer']);
    		return $answer_arr;
    	}

    Парадокс в том, что в этой функции раньше использовался курл, который заменили на wp_remote_request. С курлом всё чётко. А с wp_remote_request все запросы чётко, а загрузка файлов не идёт. От апи приходит ответ, что мол косяк с размерами изображения. Вообще малец негодую от того, что вп запрещает родной курл в пользу своих наработок считая его опасным, но официальные библиотеку с курлом — не опасны. Но то лирика конечно.

    • Ответ изменён 3 года, 1 месяц назад пользователем icopydoc.
    • Ответ изменён 3 года, 1 месяц назад пользователем icopydoc.
Просмотр 2 ответов — с 1 по 2 (всего 2)

Тема «Чем заменить new CURLFile?» закрыта для новых ответов.