【发布时间】:2016-07-29 11:54:22
【问题描述】:
我在使用 get_post、get_post_meta、sanitize_text_field 时遇到问题, 以及 php 文件中的任何其他函数来生成 XML 代码。 我在这里检查了所有帖子,但我什么也没找到,所以我需要问一下。 问题是我需要制作一个提要 xml 以在 wordpress 中从我的数据库中导出所有自定义帖子,基本上我只是连接到数据库并使用(mysql_query)获取所有信息,这是我使用的基本代码,由 wy,我以前用过但不在 wordpress DB 中,在 Joomla DB 中:
代码:
<?php header('Content-type: text/xml; charset="utf-8"', true);
// Set the database access information as constants:
$host = "any";
$dbuser = "any";
$pass = "any";
$database = "any";
$linkID = mysql_connect($host, $dbuser, $pass) or die("No se puede conectar al servidor WEB");
mysql_select_db($database, $linkID) or die("No se puede encontrar la BD en el Servidor");
mysql_set_charset("utf8");
$query = sprintf( "SELECT ID, post_author as autor, post_title as titulo, post_content as descripcion, post_name as urlamigable FROM database WHERE post_status = '%s' AND post_type = '%s'", mysql_real_escape_string($post_status), mysql_real_escape_string($post_type) );
$resultID = mysql_query($query, $linkID) or die("NO se pudo ejecutar la consulta o no hay resultados que mostrar.");
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
echo "<node>\n";
echo $query;
// $homeland_price = sanitize_text_field( get_post_meta($row['ID'], 'post_meta_key', true ) );
for($x = 0 ; $x < mysql_num_rows($resultID) ; $x++)
{
$row = mysql_fetch_assoc($resultID);
echo "<node1>\n";
echo "<ID>" .$row['ID']. "</ID>\n";
echo "<autor>" .$row['autor']. "</autor>\n";
// $titulo = sanitize_text_field($row['titulo']);
// <![CDATA[$row['titulo']]]> $titulo = esc_attr($row['titulo']);
echo "<titulo>" .$row$['titulo']. "</titulo>\n";
echo "<descripcion>" .$row$['descripcion']. "</descripcion>\n";
echo "</node1>\n";
}
mysql_free_result($resultID);
echo "</node>\n";
exit ();
?>
在这种情况下,ID 和 AUTOR 字段是整数,没有问题,但 TITULO 和 DESCRIPCION 字段是文本字段,我无法获得真正的价值,即使我在 joomla <![CDATA[" . $row['titulo'] . "]]> 中使用的相同代码也不起作用并得到错误。
所以为什么我尝试使用 workpress 附带的功能来处理帖子,但是当我尝试使用它时总是出现错误,例如“致命错误:调用未定义函数 sanitize_text_field() in /第 40 行的 public_html/feedxml.php"
我还尝试使用“include”或“require”或“require_once”包含此函数所在的文件,但也不起作用,甚至说同样的错误。
为什么我现在不知道我该怎么做才能使用这些功能。
【问题讨论】:
-
你需要在wordpress里面运行它,你至少应该需要wp-load.php
-
嗨,Lanis,对不起,“wordpress 内部”是什么意思,我在这个方向(/home/my-account/public_html/feedxml.php)运行文件,但是即使我多次将目录更改为(/home/my-account/public_html/wp-includes/feedxml.php)并得到相同的错误。
-
正如您之前评论的那样,我尝试包含许多文件和目录,例如“require_once('../../wp-load.php');”或包括完整地址,如“include('/home/my-account/public_html/wp-load.php');”,或包括使用所有组合的目录并得到相同的错误。此页面包含以下错误:第 2 行第 1 列的错误:文档末尾的额外内容 下面是页面的呈现直到第一个错误。