我一直在为Wordpress开发一个插件,该插件使用帖子中的元素更新XML文件。我使用了一个第三方插件来创建XML字段,到目前为止,这是可行的。
我在XML和挂钩本身方面遇到了很多问题。我正在使用php4every1中的DomDocument示例。com,每当我在php文件中单独运行它时,它都会工作。但是,如果我将其包含在一个与wordpress中发布帖子相关的函数中,则会出现以下错误:“该插件在激活期间生成了1个字符的意外输出。如果您注意到“标题已发送”消息、联合提要问题或其他问题,请尝试停用或删除该插件。”什么也没发生。包含XML的函数根本不会运行,我也不知道为什么。
这是我的代码:
<?php
add_action(\'publish_post\',\'update_xml\');
function update_xml(){
$xml = new DOMDocument(\'1.0\', \'utf-8\');
$xml->formatOutput = true;
$xml->preserveWhiteSpace = false;
$xml->load(\'fruits.xml\');
//Get item Element
$element = $xml->getElementsByTagName(\'item\')->item(0);
//Load child elements
$name = $element->getElementsByTagName(\'name\')->item(0);
$price = $element->getElementsByTagName(\'price\')->item(0);
$count = $element->getElementsByTagName(\'count\')->item(0);
//Change values
$name->nodeValue = \'Orange\';
$price->nodeValue = 14.33;
//Create new element
$newCount = $xml->createElement(\'count\', 10);
//Replace old elements with new
$element->replaceChild($name, $name);
$element->replaceChild($price, $price);
$element->replaceChild($newCount, $count);
//Create one new item element
$newItem = $xml->createElement(\'item\');
$newItem->appendChild($xml->createElement(\'name\', \'hest\'));
$newItem->appendChild($xml->createElement(\'price\', 10.59));
$newItem->appendChild($xml->createElement(\'count\', 131));
//Add it to fruits element
$xml->getElementsByTagName(\'fruits\')->item(0)->appendChild($newItem);
$xml->save(\'fruits.xml\');
}
?>
和xml文件:
<?xml version="1.0" encoding="UTF-8"?> <fruits>
<item>
<name>Apple</name>
<price>10.25</price>
<count>15</count>
</item>
</fruits>
正如我所说,每当我在一个没有钩子和函数的单独php文件中运行它时,上面的内容都会起作用,但在插件的钩子中,它会断开。我对编程、php和wordpress很陌生,所以我打赌我忽略了一些愚蠢的东西,但什么呢?
提前谢谢。
编辑:我在激活插件时遇到此错误:“该插件在激活期间生成了1个字符的意外输出。如果您注意到“headers ready sent”消息、联合提要问题或其他问题,请尝试停用或删除此插件。”