我有一个表格可以抓取用户的数据并将其保存为博文。
表单操作转到此页面:
wp-content/plugins/formplugin/savepost.php
但是当我尝试按wp_insert_post($args)
保存帖子时,在该页面中,会发生以下错误:
"Call to undefined function wp_insert_post() in D:\EasyPHP-5.4.0RC4\www\wp2\wp-content\plugins\formplugin\savepost.php on line 18".
有什么遗失吗?
if(isset($_POST['send'])){
$args=array(
'post_name' => $_POST['postname'],
'post_title' => $_POST['postname'],
'post_status' => 'publish',
'post_type' => 'post',
'post_excerpt' => $_POST['postdesc']
);
wp_insert_post($args);
}
答案 0 :(得分:1)
在外部文件中包含WordPress:
看起来您正在使用WordPress范围之外的外部文件。即使文件在plugins文件夹中,也不意味着WordPress必须知道它。
您可以将WordPress包含到外部文件中,添加以下内容:
<?php
define( 'WP_USE_THEMES', FALSE );
require_once( '/path/to/your/wp-blog-header.php' );
位于文件顶部。 wp-blog-header.php
应位于WordPress根文件夹中。
<强>替代:强>
但是既然你正在使用WordPress,为什么不构造一个pretty url并使用hook拦截表单发布,而不是指向外部文件?
需要考虑的事项:
您应该考虑使用filter_input代替$_POST
。
我还建议使用WordPress nonces。
验证和清理所有用户输入是一个很好的规则。 Here's这个问题的一个很好的起点。
答案 1 :(得分:0)
阅读错误消息会使错误变得非常清楚。
消息Call to undefined function
表示在您要访问的文件中,该功能不存在。
因此,在savepost.php
页面中没有名为wp_insert_post()
的函数。
您需要添加此内容,或者您可以通过加载wpdb
并使用该数据来发送数据。
答案 2 :(得分:-1)
你的函数wp_insert_post()......它说它不存在或无法到达。