Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在页面加载时创建外部XML文件_Php_Xml_Wordpress_Fopen - Fatal编程技术网

Php 在页面加载时创建外部XML文件

Php 在页面加载时创建外部XML文件,php,xml,wordpress,fopen,Php,Xml,Wordpress,Fopen,基本上,我已经为自定义帖子类型“dealer”设置了一个WPAlchemy metabox,我想生成一个XML文件,其中包含来自所有dealer帖子的格式化元数据,以便这些数据可以用于google地图上的标记。以下是我的functions.php文件中基于 addChild('markers'); foreach($i=>$marker作为标记){ $name=获取标题($marker->ID); $lat=get\u post\u meta($marker->ID,'lat',true); $

基本上,我已经为自定义帖子类型“dealer”设置了一个WPAlchemy metabox,我想生成一个XML文件,其中包含来自所有dealer帖子的格式化元数据,以便这些数据可以用于google地图上的标记。以下是我的functions.php文件中基于

addChild('markers');
foreach($i=>$marker作为标记){
$name=获取标题($marker->ID);
$lat=get\u post\u meta($marker->ID,'lat',true);
$lng=get\u post\u meta($marker->ID,'long',true);
$xml->markers->addChild('marker');
$xml->markers->marker[$i]->addAttribute('name',$name);
$xml->markers->marker[$i]->addAttribute('lat',$lat);
$xml->markers->marker[$i]->addAttribute('lng',$lng);
}
$file='1http://encode-design.com/wp-content/uploads/test.xml';
$open=fopen($file,'w')或die(“无法打开文件”);
fwrite($open,$xml->asXML());
fclose(开放式);
}
}
添加操作('save_post','markers_xml');?>

当我保存经销商帖子时,我没有收到“文件无法打开”的消息,但xml文件也没有任何更改。我已经将xml文件和上载文件夹权限设置为777,并且在我的服务器上启用了fopen。我错过了什么?任何帮助都将不胜感激

添加此代码以检查写入文件是否成功

if(!fwrite($open, $xml->asXML()))
{
    echo 'error';
}
else
{
    echo 'success'; 
}

我切换到file_put_contents()而不是fopen、fwrite和fclose,它成功了!还简化了我的文件路径

<?php 
$xml = new SimpleXMLElement('<xml/>');
$markers = get_posts('post_type=es_dealer&posts_per_page=-1');
$xml->addChild('markers');
foreach($markers as $i=>$marker) {
    global $dealer_mb;
    $meta = $dealer_mb->the_meta($marker->ID);
    $name = get_the_title($marker->ID);
    $lat = $meta['lat'];
    $lng = $meta['long'];

    $xml->markers->addChild('marker');
    $xml->markers->marker[$i]->addAttribute('name', $name);
    $xml->markers->marker[$i]->addAttribute('lat', $lat);
    $xml->markers->marker[$i]->addAttribute('lng', $lng);
}
$file = 'testing.xml';
$current = $xml->asXML();
file_put_contents($file,$current); 
?>
addChild('markers');
foreach($i=>$marker作为标记){
全球$mb;
$meta=$dealer\u mb->the\u meta($marker->ID);
$name=获取标题($marker->ID);
$lat=$meta['lat'];
$lng=$meta['long'];
$xml->markers->addChild('marker');
$xml->markers->marker[$i]->addAttribute('name',$name);
$xml->markers->marker[$i]->addAttribute('lat',$lat);
$xml->markers->marker[$i]->addAttribute('lng',$lng);
}
$file='testing.xml';
$current=$xml->asXML();
文件内容($file,$current);
?>

如果您直接将文件名传递给asXML,您可以跳过fopen和fwrite,例如:
$xml->asXML($file)。不确定它是否能解决这个问题,但它会在解决方案中删除一个额外的层。
<?php 
$xml = new SimpleXMLElement('<xml/>');
$markers = get_posts('post_type=es_dealer&posts_per_page=-1');
$xml->addChild('markers');
foreach($markers as $i=>$marker) {
    global $dealer_mb;
    $meta = $dealer_mb->the_meta($marker->ID);
    $name = get_the_title($marker->ID);
    $lat = $meta['lat'];
    $lng = $meta['long'];

    $xml->markers->addChild('marker');
    $xml->markers->marker[$i]->addAttribute('name', $name);
    $xml->markers->marker[$i]->addAttribute('lat', $lat);
    $xml->markers->marker[$i]->addAttribute('lng', $lng);
}
$file = 'testing.xml';
$current = $xml->asXML();
file_put_contents($file,$current); 
?>