我可以通过针对REST API发送带有cURL的请求来创建一篇新文章。这很好用。
我还可以通过REST API将文件上载到带有cURL的媒体库中。上传的文件在媒体库中按预期正确显示。
但是,我如何在不使用本机WordPress函数的情况下将这些上传的文件分配给之前创建的帖子,以便它们被WordPress主题中的get\\u attached\\u media()函数识别?
当前已创建帖子,文件已上载,但未附加到帖子。
我想通过只使用RESTAPI和一些PHP代码而不使用任何WordPress函数来解决这个问题。
function upload_file_to_wp($filename) {
$file = file_get_contents($filename);
$mime = mime_content_type($filename);
$url = WP_URL . \'media\';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $file);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
\'Content-Type: \' . $mime,
\'Content-Disposition: attachment; filename="\' . basename($filename) . \'"\',
]);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, WP_USER . \':\' . WP_PASS);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
if (defined(\'WP_DEBUG\') && WP_DEBUG !== false) {
error_log(\'[\' . date(\'Y-m-d H:i:s\') . \'] cURL result: \' . print_r(json_decode($result, JSON_OBJECT_AS_ARRAY), true) . "\\n", 3, DEBUG_FILE);
}
}
WP\\u URL是REST API端点。