我目前正在尝试创建/更新一篇帖子,同时保存我当前的帖子。一切都发生在这里:
add_action(\'save_post\', \'wysiwyg_save_meta\');
function wysiwyg_save_meta(){
global $post;
$editor_id = WYSIWYG_EDITOR_ID;
$meta_key = WYSIWYG_META_KEY;
if(isset($_REQUEST[$editor_id])) {
update_post_meta($post->ID, WYSIWYG_META_KEY, $_REQUEST[$editor_id]);
$thankYouPost = get_thank_you_post($post->ID);
$postArgs = array(
\'post_content\' => $_REQUEST[$editor_id],
\'post_name\' => \'thank-you\',
\'post_title\' => "Thank You",
\'post_status\' => $post->post_status,
\'post_type\' => \'landing_page\',
\'post_parent\' => $post->ID,
);
if ($thankYouPost->ID) {
$postArgs[\'ID\'] = $thankYouPost->ID;
}
wp_reset_postdata();
wp_reset_query();
wp_insert_post($postArgs);
wp_reset_postdata();
wp_reset_query();
}
}
现在,这可以工作并保存两个页面,但看起来它实际上并不工作。页面只是停留并尝试加载,最终我返回502错误网关。但是,手动刷新页面会显示操作成功。
这可能是什么原因造成的?我很乐意提供更多信息。感谢您抽出时间。
最合适的回答,由SO网友:Steven Jones 整理而成
正如奥托所指出的,这将导致一个无限循环。解决方案是在执行wp\\u insert\\u post之前先将函数解钩,然后再将其挂回。
remove_action(\'save_post\', \'wysiwyg_save_meta\');
wp_insert_post($postArgs);
add_action(\'save_post\', \'wysiwyg_save_meta\');