致命错误:调用未定义的函数wp_sert_post()

时间:2016-04-03 作者:mesqueeb

因此,我有一个表单,可以使操作跳转到另一个php页面。

在那里,我的php代码尝试上传帖子。我得到以下错误:

致命错误:调用未定义的函数wp\\u insert\\u post()

PHP代码:

ini_set(\'display_errors\', 1);
ini_set(\'display_startup_errors\', 1);
error_reporting(E_ALL);

if( \'POST\' == $_SERVER[\'REQUEST_METHOD\'] && !empty( $_POST[\'action\'] ) &&  $_POST[\'action\'] == "upload_ugc") {

if($_POST["editindication"] == \'newpost\'){
$post_array = array(
    \'post_title\'    => $_POST["post_title"],
    \'post_content\'  => \'\',
);
$post_id = wp_insert_post( $post_array, true );
}

1 个回复
最合适的回答,由SO网友:kovshenin 整理而成

如果要在裸PHP文件中使用WordPress函数,则必须加载WordPress环境:

require_once \'/path/to/wp-load.php\';
也就是说,最好不要在WordPress之外通过单独的PHP文件来处理事情,而是使用插件并在适当的操作上启动代码。您可以使用页面模板或短代码呈现表单,然后在inittemplate_redirect 从插件中挂钩:

add_action( \'init\', function() {
    if ( empty( $_POST[\'action\'] ) || $_POST[\'action\'] != \'upload_ugc\' )
        return;

    // Your wp_insert_post statement
    wp_redirect( home_url( \'/upload-success/\' ) );
    die();
});
此外,在使用用户输入时,不要忘记安全性,尤其是对于登录的用户。在你的情况下,你需要wp_nonce_field 至少,并可能通过wp_kses.

相关推荐

使用WPForms提交表单时触发操作

我的一位客户使用WPForms插件创建前端表单。提交表单时,条目进入de数据库(在单独的表wp\\u wpform\\u entries或类似的表中,全部由插件处理)。但他们也希望以JSON格式将所有数据发布到另一个网站。是否有办法知道表单已提交,或者使用add_filter(\'wp_insert_post)?