中有一些有关此问题的信息Action Reference for save post:
如果调用包含save\\u post挂钩的wp\\u update\\u post等函数,那么挂钩函数将创建一个无限循环。为了避免这种情况,请在调用所需函数之前先取消钩住函数,然后再重新钩住它。
因此,类似这样的方法应该有效:
[...]
add_action( \'save_post\', array( $this, \'save_meta_box\' ), 13, 2 );
[...]
public function save_meta_box( $post_id, $post ) {
if ( isset( $_POST[\'options\'] ) ) {
myplugin_set_options( $post_id, $_POST[\'options\'] );
remove_action( \'save_post\', array( $this, \'save_meta_box\' ), 13, 2 );
// switch post visibility
switch ( $_POST[\'options\'][\'type\'] ) {
case \'normal\':
wp_update_post( array( \'ID\' => $post_id, \'post_status\' => \'private\' ));
break;
case \'extended\':
wp_update_post( array( \'ID\' => $post_id, \'post_status\' => \'publish\' ));
break;
}
add_action( \'save_post\', array( $this, \'save_meta_box\' ), 13, 2 );
}
}