我正在开发自定义 WordPress 主题,并在使用 Elementor 导入页面时遇到问题。我使用的是 Elementor 的免费版本,并且我已使用以下代码成功导出了页面:
$pages = get_posts( array('post_type' => 'page', 'numberposts' => -1) );
$exported_data['pages'] = array();
foreach ($pages as $page) {
$page_data = array(
'ID' => $page->ID,
'post_title' => $page->post_title,
'post_content' => $page->post_content,
'meta' => get_post_meta($page->ID),
'is_elementor' => (get_post_meta($page->ID, '_elementor_edit_mode', true) === 'builder'),
'_elementor_data' => get_post_meta($page->ID, '_elementor_data', true)
);
$exported_data['pages'][] = $page_data;
}
但是,当我尝试使用以下代码导入页面时:
$exported_pages = $imported_data['pages'];
$page_id_mapping = array();
if (isset($exported_pages)) {
foreach ($exported_pages as $page_data) {
// ...
// Code to create the page and set metadata
// ...
// Using Elementor
if ($page_data['is_elementor']) {
$elementor_data = array();
if (isset($page_data['_elementor_data'])) {
$decoded_data = json_decode($page_data['_elementor_data'], true);
$elementor_data = $decoded_data[0];
}
update_post_meta($page_id, '_elementor_data', $elementor_data);
update_post_meta($page_id, '_elementor_edit_mode', 'builder');
}
}
}
我收到错误“致命错误:未捕获类型错误:Elementor\Core\Page_Assets\Loader::enable_assets():参数 #1 ($assets_data) 必须是数组类型”。此错误似乎是由 Elementor 中的enable_assets() 调用引起的。
我已经验证 _elementor_data 的值是有效的 JSON,并且我已经正确解码了关联数组。我不确定是什么原因导致此错误或如何解决它。
_elementor_data decode:
array (size=5)
'id' => string 'd9e7f92' (length=7)
'elType' => string 'section' (length=7)
'settings' =>
array (size=10)
'layout' => string 'full_width' (length=10)
'height' => string 'full' (length=4)
'content_position' => string 'middle' (length=6)
'overflow' => string 'hidden' (length=6)
'background_background' => string 'classic' (length=7)
'background_image' =>
array (size=5)
...
'background_position' => string 'center center' (length=13)
'background_repeat' => string 'no-repeat' (length=9)
'background_size' => string 'cover' (length=5)
'css_classes' => string 'hero' (length=4)
'elements' =>
array (size=1)
0 =>
array (size=5)
...
'isInner' => boolean false
有人在使用 Elementor 导入 WordPress 页面时遇到过类似的问题吗?在自定义主题中正确处理 Elementor 数据的导入可能有哪些可能的解决方案或替代方案?
提前感谢您的帮助!
我也面临同样的问题,请问您找到解决办法了吗?