当我们使用wp\\u update\\u post函数并执行pre\\u post\\u更新操作时,它会在数据库中得到更新,但WYSWIAG编辑器会显示刚刚进行的修订,而不是已处理的修订。
例如,post\\u内容="test 1 test2"
保存帖子草稿Post\\u内容,如wp admin WYSWIAG中所示/text="test 1 test2"
保存Post草稿Post\\U内容,如数据库中所示="test <span style=\'color : #0e9a46\'>one</span> test2"
然后,如果刷新页面,WYSWIAG编辑器将显示="test <span style=\'color : #0e9a46\'>one</span> test2"
(呈现HTML)
代码如下:
function regexcheck($post_id){
$post_type = get_post_type();
if ( $post_type == \'story\' ) {
remove_action(\'pre_post_update\', \'regexcheck\');
require_once(\'regex.php\');
global $post;
$content = $post->post_content;
$post_id = $post->ID;
$response_array = regex($content);
$update_post = $response_array[\'finalString\'];
$my_post = array(\'ID\'=>$post_id, \'post_content\'=> $update_post);
wp_update_post($my_post);
return $response_array;
add_action(\'pre_post_update\', \'regexcheck\');
}
}
add_action(\'pre_post_update\', \'regexcheck\');
我尝试将操作移动到init,但这并不能解决问题。我也试过睡觉,但没用。不知道我在这里错过了什么。