Bueno después horas de darle vueltas he conseguido que funcione, aunque no acabo de tener claro el por qué. Si alguien me dice por que antes no me funcionaba y ahora si, lo agradecería.
He hecho lo siguiente:
Código PHP:
<?php
function publicaratom(){
global $wpdb;
$rows = $wpdb->get_results("SELECT ID, post_title, post_content FROM $wpdb->posts
WHERE post_status = 'publish' ORDER BY post_date_gmt DESC LIMIT 1");
foreach ($rows as $row) {
$salida.= '<html>'." \n";
$salida.= "\t<header>\n";
$salida.="\t\t".'<title>'.$row->post_title.'</title>'."\n";
$salida.= "\t".'</header>'."\n";
$salida.= "\t\t".'<body>'.$row->post_content.'</body>'."\n";
$salida.= "\t".'</html>';
}
$ruta = "../".date (His).".html";
$fp = fopen($ruta, "w+");
fwrite($fp, $salida);
flock($fp, 3);
fclose($fp);
}
if(function_exists('add_action'))
{
add_action('publish_post', 'publicaratom');
}
?>
Así funciona perfectamente, pero me gustaría entender porque antes no funcionaba o si existe un modo mejor de hacerlo.
Un saludo.