我对WordPress开发不太熟悉,基本上我有一个单独的PHP脚本,我不能将表单数据从它传递到WP插件,插件将通过$ _GET左右获取该数据,将其作为新帖子插入WP。
我在插件中尝试了以下代码,但是会导致有关“调用未定义函数is_user_loggedin”的错误。
$post = array(
'post_title' => "test title",
'post_content' => "test content",
'post_date' => 0,
'post_date_gmt' => 0,
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array(1)
);
wp_insert_post($post);
然后我找到了一个解决方案,将代码包装在一个函数中并使用“init”钩子执行它。
function insert_post(){
$post = array(
'post_title' => "test title",
'post_content' => "test content",
'post_date' => 0,
'post_date_gmt' => 0,
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array(1)
);
wp_insert_post($post);
}
add_action('init', 'insert_post');
同样,这会插入帖子,但它会不断地一遍又一遍地插入相同的帖子,而不是仅在我的插件被调用时插入一次。
任何帮助或解决方案都将不胜感激,谢谢。
答案 0 :(得分:0)
我不使用Wordpress。但当我看着 Wordpress WP Insert Post Guidance
您不应该将代码包装在函数中。 请仔细检查您是否已包含所有必需的包含/所需文件以调用wp_insert
EX:
// Gather post data.
$my_post = array(
'post_title' => 'My post',
'post_content' => 'This is my post.',
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array( 8,39 )
);
// Insert the post into the database.
wp_insert_post( $my_post );
那
wp_insert_post()通过sanitize_post()传递数据,它本身处理所有必要的清理和验证(kses等)。
根据wordpress指南