WordPress Lỗi khi import dữ liệu với wordpress importer

Quảng cáo
Ads_ngang
Website dinhthuanit.com có bài WordPress Lỗi khi import dữ liệu với wordpress importer

Trong bài trước, mình có chỉ dẫn các bạn làm sao để nhập dữ liệu wordpress bằng file XML có kích thước lớn. Nhưng trong qui trình cài đặt wordpress lên hosting bạn còn mắc phải một số lỗi khác như không import được dữ liệu file XML khi sử dụng plugin wordpress importer. Sau khi upload file xml lên thư mục uploads/ trước lúc tiến hành import dữ liệu lấy từ file XML, bạn có thể gặp phải lỗi trang trắng như thế này.
import-wordpress-white-screen

Bật kiểm tra lỗi trong wp-config.php , thì thấy hiện thông báo lỗi của file wordpress-importer/parsers.php

 Fatal error: Class 'DOMDocument' not found in wordpress-importer/parsers.php on line 61  

import-wordpress-not-found-domdocument

Lỗi trên là vì phiên bản PHP cài trên host không hỗ trợ class DOMDocument, lớp này được thêm nữa PHP từ phiên bản 5 trở lên.

Để tránh lỗi class not found trong khi import dữ liệu Bạn cũng có thể có thể nâng cấp lên PHP 5.3 để sử dụng class này, tuy vậy đối với các dùng seller host thì không tự tiện đòi hỏi bên cung cấp hosting cải tiến PHP lên được đâu vì ảnh hưởng tới những người cùng thuê với bạn.
Nhưng, vẫn còn có 1 cách khác bạn được phép thay class DOMDocument bằng hàm simplexml_load_file trong file plugins/wordpress-importer/parsers.php cũng đảm nhận một công việc tương tự.

Bản plugin wordpress-importer ngày xưa và giờ đây có sử dụng lớp DOMDocument để đọc phần tử thẻ trong XML, tạo đối tượng XML thông qua việc đọc nội dung từ file bạn import vào đối tượng lớp DOMDocument và lấy đối tượng trả về của hàm simplexml_import_dom dược sử lý qua DOMDocument. Chúng ta sẽ bỏ lỡ đoạn code đó thay vào bằng dòng code tạo XML trực diện từ file nhờ vào hàm simplexml_load_file .

Tìm các dòng sau đây trong file parsers.php

 $dom = new DOMDocument; $old_value = null; if ( function_exists( 'libxml_disable_entity_loader' ) ) { $old_value = libxml_disable_entity_loader( true ); } $success = $dom-> loadXML( file_get_contents( $file ) ); if ( ! is_null( $old_value ) ) { libxml_disable_entity_loader( $old_value ); } if ( ! $success || isset( $dom-> doctype ) ) { return new WP_Error( 'SimpleXML_parse_error', __( 'There was an error when reading this WXR file', 'wordpress-importer' ), libxml_get_errors() ); } $xml = simplexml_import_dom( $dom );  

Cho vào comment hoặc thay thế bởi đoạn code sau và cách tốt hơn hết là kiểm tra sự hiện diện của class DOMDocument , còn lại sử dụng hàm simplexml_load_file .

 if(class_exists('DOMDocument')){ $dom = new DOMDocument; $old_value = null; if ( function_exists( 'libxml_disable_entity_loader' ) ) { $old_value = libxml_disable_entity_loader( true ); } $success = $dom-> loadXML( file_get_contents( $file ) ); if ( ! is_null( $old_value ) ) { libxml_disable_entity_loader( $old_value ); } if ( ! $success || isset( $dom-> doctype ) ) { return new WP_Error( 'SimpleXML_parse_error', __( 'There was an error when reading this WXR file', 'wordpress-importer' ), libxml_get_errors() ); } $xml = simplexml_import_dom( $dom ); } else $xml = simplexml_load_file($file); ...  

Save lại file trên host và thưởng thức kết quả.

Nếu bạn thích bài viết này, hãy ủng hộ chúng tôi bằng cách đăng ký nhận bài viết mới ở bên dưới và đừng quên chia sẻ kiến thức này với bạn bè của bạn nhé. Bạn cũng cũng có thể có thể theo dõi blog này trên Twitter và Facebook

Bài viết WordPress Lỗi khi import dữ liệu với wordpress importer được tổng hợp và biên tập bởi: dinhthuanit.com. Mọi ý kiến đóng góp và phản hồi vui lòng gửi Liên Hệ cho dinhthuanit.com để điều chỉnh. dinhthuanit.com xin cảm ơn.

Bài Viết Liên Quan


Bài Viết Khác


Quảng cáo
Ads_ngang