Crear sesión de login mediante CURL
Con el siguiente código experimenté algunos problemas: El login funciona pero cada enlace en el panel de control que hago clic me lleva a una página 404 no encontrada. Parece que no se crea una sesión válida.
$username="admin";
$password="admin";
$url="http://www.yourdomain.com/";
$cookie="cookie.txt";
$postdata = "log=". $username ."&pwd=". $password ."&wp-submit=Log%20In&redirect_to=". $url ."wp-admin/&testcookie=1";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url . "wp-login.php");
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_REFERER, $url . "wp-admin/");
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);
curl_close($ch);
echo $result;
exit;

No estoy seguro de que sea un problema de sesión, creo que tiene que ver con el hecho de que el panel de control de WordPress utiliza enlaces relativos.
Una solución rápida y un poco rudimentaria sería agregar:
curl_setopt($ch,CURL_COOKIEFILE, ''); // Habilita el soporte de sesión
Luego, agregar esto después de cerrar el controlador cURL para redirigir a la ubicación real del panel de control:
curl_close($ch);
header('location: blog/wordpress/wp-admin/');
die();

@Bainternet...buena respuesta, he probado tu método y hay algunos errores que quiero comentar
curl_setopt($ch,CURLOPT_COOKIEFILE,'cookie.txt'); faltaba OPT
y para la redirección está añadiendo la URL anterior y para evitar eso puedes usar
curl_setopt($ch,CURLOPT_POSTFIELDS,'log='.urlencode($log).'&pwd='.urlencode($password).'&redirect_to='.urlencode($redirect));
aquí puedes proporcionar la URL de redirección según tus necesidades a cualquier página del administrador de WordPress.

Aquí está el código que funcionó para mí:
El cambio clave es que eliminé el parámetro llamado "testcookie" de mi cadena POST.
Nota: reemplaza "mywordpress" por tu sitio web, y coloca tu nombre de usuario y contraseña en el siguiente código
$curl = curl_init();
//---------------- configuración genérica de cURL inicio ----------------
$header = array(
"Referer: https://mywordpress/wp-login.php",
"Origin: https://mywordpress",
"Content-Type: application/x-www-form-urlencoded",
"Cache-Control: no-cache",
"Pragma: no-cache",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15"
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15');
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_COOKIESESSION, true);
curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookies.txt');
curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookies.txt');
//---------------- configuración genérica de cURL fin ----------------
