Cách để export ra dữ liệu json: trong qua trình viết một plugin nào đó chúng ta có nhu cầu export và import dữ liệu thì giải pháp đó là xuất các cài đặt hoặc bất cứ dữ liệu có sẳn ra file json rồi sau đó có thể import trở lại. Vậy việc này làm như thế nào?. Ngay sau đây tôi sẽ chia sẽ cách làm
Bài toán đưa ra là tôi muốn export các setting của woocommerce, để sau này import vào là dùng khỏi phải tốn thời gian đi cài đặt
Trước hết chung ta sẽ tạo một form để người dùng trigger để export. ngay sau đây là mã của nó
1 2 3 4 5 6 7 8 9 10 11 |
<div class="wrap"> <h1 class="mb-3"> Export settings of woocommerce <form method="post"> <p><input type="hidden" name="woocommerce-settings-action" value="export" /></p> <?php wp_nonce_field( 'woocommerce-settings-action-nonce', 'woocommerce-settings-action-nonce' ); ?> <button type="submit" style="margin-left:5px; padding: .75rem 1.5rem; cursor:pointer;" class="btn btn-lg btn-success pull-right" id="export_settings_of_lifterlms"><span class="fa fa-cloud-download mr-2"></span>Export now</button> </form> <div style="clear: both;"></div> </h1> </div> |
Khi người dùng click vào nút export now chúng ta sẽ sử dụng hook admin_init để gắn code export json vào và đây là code của nó
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
function woocommerce_settings_export_json() { //check if no trigger if ( empty( $_POST['woocommerce-settings-action'] ) || 'export' != $_POST['woocommerce-settings-action'] ) { return; } if ( ! isset( $_POST['woocommerce-settings-action-nonce'] ) || empty( $_POST['woocommerce-settings-action-nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['woocommerce-settings-action-nonce'] ) ), 'woocommerce-settings-action-nonce' ) ) { return; } if ( ! current_user_can( 'manage_options' ) ) { return; } //Run export start here global $wpdb; $arr=array(); $sql="SELECT * FROM `".$wpdb->prefix."options` WHERE `option_name` LIKE '%woocommerce_%'"; $results=$wpdb->get_results($sql); if($results): foreach($results as $result): $arr[$result->option_name]=get_option($result->option_name); endforeach; endif; nocache_headers(); header( 'Content-Type: application/json; charset=utf-8' ); header( 'Content-Disposition: attachment; filename=site-settings-woocommerce-' . gmdate( 'm-d-Y' ) . '.json' ); header( 'Expires: 0' ); echo wp_json_encode($arr); exit; } add_action( 'admin_init', 'woocommerce_settings_export_json' ); |
Phần import mời anh chị xem tiếp phần kế tiếp nhé
Mọi sự sao chép xin ghi rõ nguồn là fcwordpress.net
Chuyên trang về wordpress: hướng dẫn thiết kế theme, plugin, thủ thuật wordpress