使用WP函数而不是普通的SQL时的事务?

时间:2016-11-23 作者:Dan.

WordPress是否提供了一种使用时回滚的方法,例如,update_post_metawp_insert_post?

E、 g.我正在插入一个新帖子,并在一个函数中为其提供一些帖子元:

some_wp_transaction_init_function();

try{
    $post_id = wp_insert_post($args, true);
    update_post_meta($post_id, \'meta_key\', \'meta_value\');   
}catch(Exception $e){
    some_wp_rollback_function();
}

some_wp_commit_function();
或者我必须使用香草SQL,或者$wpdb 对象

谢谢

1 个回复
SO网友:Cyclonecode

wordpress中没有处理事务的函数,但您可以轻松地使用$wpdb 对象进行简单查询以实现此目的。以下函数将启动一个事务,然后向数据库中插入一个新用户,最后回滚当前事务。为了使交易永久化,您可以使用$wpdb->query(\'COMMIT\');

function test_transaction() {
  global $wpdb;

  // begin transaction
  $wpdb->query(\'START TRANSACTION\');

  $user = array(
    \'user_pass\' =>  \'sample_password\',
    \'user_login\' => \'sample_login\',
    \'user_email\' => \'[email protected]\',
    \'first_name\' => \'sample_firstname\',
    \'last_name\' => \'sample_lastname\',
  );
  $user_id = wp_insert_user($user);

  // roll back everything - e.g remove the new user record from the database
  $wpdb->query(\'ROLLBACK\');
};