Intereting Posts
Не удается обновить сообщение, ошибка 404 Пользовательские вырезки для отдельных страниц Как присоединиться к двум таблицам из отдельных баз данных в WordPress как я могу избавиться от ссылок и всех связанных с ними элементов меню в admin ui? как использовать ajax в области администрирования плагина? Добавление мастера в мой плагин использование pre_get_posts для результатов поиска не найдено Безопасно отключить wptexturize? Как перенаправить огромное количество URL-адресов на другие URL-адреса? Получите доступ к WordPress при выходе из системы Как автоматически добавлять пользовательские классы в заголовки в области содержимого wpdb-> get_var всегда возвращает 0 Как получить меню wordpress nav вне системы wordpress? Как регистрировать пользовательские типы сообщений в плагине? Сообщение о проблеме обновления повторяется, когда страница отправляется после перезагрузки страницы.

Транзакция при использовании функций WP, а не ванильного SQL?

Предоставляет ли WordPress способ отката при использовании, например update_post_meta или wp_insert_post ?

Например, я вставляю новую запись и даю ей некоторую мета-почту внутри одной функции:

 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(); 

Или мне нужно использовать vanilla SQL или объект $wpdb ?

благодаря

В 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' => 'sample@example.com', 'first_name' => 'sample_firstname', 'last_name' => 'sample_lastname', ); $user_id = wp_insert_user($user); // roll back everything - eg remove the new user record from the database $wpdb->query('ROLLBACK'); };