提问人:Parash Shrestha 提问时间:10/11/2023 最后编辑:Parash Shrestha 更新时间:10/16/2023 访问量:50
elementor import_templates编码不导入模板
elementor import_templates coding not importing template
问:
有人可以帮助我完成此代码吗?因为我正在从主题目录导入 JSON 模板文件,并通过传递可用的模板 ID 将导入的 JSON 文件设置为首页。我在 WordPress 仪表板上有一个admin_menu按钮,点击它时会触发下面粘贴的功能。非常感谢您的帮助。
我用过的代码
if (class_exists('Elementor\Plugin')) {
$template_file_path = get_stylesheet_directory().'/assets/exampleTemplate.json';
$template_content = file_get_contents($template_file_path);
$template_data = json_decode($template_content, true);
if (is_array($template_data)) {
if ($template_data !== null) {
$template_manager = \Elementor\Plugin::$instance->templates_manager;
$imported_template = $template_manager->import_template($template_data);
if (!is_wp_error($imported_template)) {
$imported_template_id = $imported_template['template_id'];
// Set the imported template as the front page
update_option('page_on_front', $imported_template_id);
update_option('show_on_front', 'page');
wp_send_json_success('Template imported successfully and set as the front page.');
} else {
$error_message = $imported_template->get_error_message();
wp_send_json_error('Error importing template: ' . $error_message);
}
} else {
wp_send_json_error('Error decoding JSON file.');
}
} else {
wp_send_json_error('JSON file not found.');
}
} else {
wp_send_json_error('Elementor is not active.');
}
答:
0赞
suchislife
10/15/2023
#1
首先,我将确保我有正确的文件路径、JSON 结构和 Elementor 活动。此外,请根据您的设置考虑用于父主题或子主题。get_template_directory()
get_stylesheet_directory()
此示例添加了更具体的错误检查,以便在出现问题时更轻松地进行故障排除。
它确保模板文件存在,检查 JSON 错误,并在继续操作之前验证 Elementor 是否处于活动状态。
if (class_exists('Elementor\Plugin')) {
$template_file_path = get_template_directory() . '/assets/exampleTemplate.json'; // For parent theme
if (file_exists($template_file_path)) {
$template_content = file_get_contents($template_file_path);
$template_data = json_decode($template_content, true);
if (json_last_error() === JSON_ERROR_NONE && is_array($template_data)) {
$template_manager = \Elementor\Plugin::$instance->templates_manager;
$imported_template = $template_manager->import_template($template_data);
if (!is_wp_error($imported_template)) {
$imported_template_id = $imported_template['template_id'];
update_option('page_on_front', $imported_template_id);
update_option('show_on_front', 'page');
wp_send_json_success('Template imported successfully and set as the front page.');
} else {
wp_send_json_error('Error importing template: ' . $imported_template->get_error_message());
}
} else {
wp_send_json_error('Invalid JSON file.');
}
} else {
wp_send_json_error('Template file not found.');
}
} else {
wp_send_json_error('Elementor is not active.');
}
示例 2
使用三元和 null 合并运算符重构代码以减少语句。if
可读性较差,但很酷,如果你的代码不会有太大变化的话。
始终考虑可读性和最小化条件语句之间的权衡。
$classExists = class_exists('Elementor\Plugin');
$template_file_path = $classExists ? get_template_directory() . '/assets/exampleTemplate.json' : null;
$template_content = $template_file_path && file_exists($template_file_path) ? file_get_contents($template_file_path) : null;
$template_data = $template_content ? json_decode($template_content, true) : null;
$jsonValid = ($template_data && json_last_error() === JSON_ERROR_NONE && is_array($template_data));
$template_manager = $jsonValid ? \Elementor\Plugin::$instance->templates_manager : null;
$imported_template = $template_manager ? $template_manager->import_template($template_data) : null;
$response = !$classExists ? 'Elementor is not active.' :
(!$template_file_path ? 'Template file not found.' :
(!$jsonValid ? 'Invalid JSON file.' :
(is_wp_error($imported_template) ? 'Error importing template: ' . $imported_template->get_error_message() :
(update_option('page_on_front', $imported_template['template_id']) && update_option('show_on_front', 'page')) &&
wp_send_json_success('Template imported successfully and set as the front page.'))));
if (is_wp_error($response)) {
wp_send_json_error($response);
} else {
wp_send_json_success($response);
}
评论
0赞
Parash Shrestha
10/16/2023
感谢您的回复,我会考虑这一点。
评论
if(!a) { return false; } else { return true; }