фон < /h2>
Я разрабатываю плагин WordPress MultiSite, который создает новые страницы элементарного договора и копируют страницы элементарных элементов с нашего основного сайта на новый дочерний. Я реализовал эту функциональность, но столкнулся с странной проблемой, в которой только определенные страницы копируют с правильной макетом. /> [*] Страница «Инспекции БПЛА» (ID: 133) также идеально копирует < /li>
Все другие страницы (о нас, 3D сканирование, блог, услуги и т. Д.) Страницы Elementor между сайтами: < /p>
/**
* Enhanced Elementor page duplication that properly preserves all Elementor data
*
* @param int $source_site_id Source site ID
* @param int $target_site_id Target site ID
* @param int $source_page_id Source page ID
* @param string $page_title Page title
* @param string $page_slug Page slug
* @param array $replacements Content replacements
* @return int New page ID or 0 on failure
*/
private static function duplicate_elementor_page(
$source_site_id,
$target_site_id,
$source_page_id,
$page_title = '',
$page_slug = '',
$replacements = []
) {
// Step 1: Get source page data
switch_to_blog($source_site_id);
$source_post = get_post($source_page_id);
if (!$source_post) {
restore_current_blog();
return 0;
}
// Get all post meta including Elementor data
$all_meta = get_post_meta($source_page_id);
$post_content = $source_post->post_content;
// Check if we have the required Elementor data
if (!isset($all_meta['_elementor_data'][0])) {
error_log("Source page ID $source_page_id does not have Elementor data");
}
$final_title = !empty($page_title) ? $page_title : $source_post->post_title;
$final_slug = !empty($page_slug) ? $page_slug : sanitize_title($final_title);
restore_current_blog();
// Step 2: Create new page in target site
switch_to_blog($target_site_id);
$new_post_id = wp_insert_post([
'post_title' => $final_title,
'post_name' => $final_slug,
'post_status' => 'publish',
'post_type' => 'page',
'post_content' => $post_content, // Include original content as fallback
]);
if (!$new_post_id || is_wp_error($new_post_id)) {
restore_current_blog();
return 0;
}
// Step 3: Apply all meta values with replacements
foreach ($all_meta as $meta_key => $meta_values) {
// Skip some WordPress internal meta
if (in_array($meta_key, ['_edit_lock', '_edit_last', '_wp_old_slug', '_wp_old_date'])) {
continue;
}
// Skip CSS data as we'll regenerate it
if ($meta_key === '_elementor_css') {
continue;
}
// Special handling for Elementor data with replacements
if ($meta_key === '_elementor_data' && !empty($meta_values[0])) {
$elementor_data = $meta_values[0];
foreach ($replacements as $search => $replace) {
$elementor_data = str_replace($search, $replace, $elementor_data);
}
update_post_meta($new_post_id, $meta_key, $elementor_data);
continue;
}
// Copy all other meta values normally
foreach ($meta_values as $meta_value) {
update_post_meta($new_post_id, $meta_key, maybe_unserialize($meta_value));
}
}
// Step 4: Ensure proper Elementor editing mode
update_post_meta($new_post_id, '_elementor_edit_mode', 'builder');
// Step 5: Replace content placeholders if needed
if ($replacements && $post_content) {
$new_content = str_replace(
array_keys($replacements),
array_values($replacements),
$post_content
);
wp_update_post([
'ID' => $new_post_id,
'post_content' => $new_content
]);
}
// Step 6: Regenerate Elementor CSS
self::regenerate_elementor_css_for_page($new_post_id);
restore_current_blog();
return $new_post_id;
}
< /code>
А вот как я регенерирую CSS: < /p>
private static function regenerate_elementor_css_for_page($page_id) {
if (!class_exists('\Elementor\Plugin')) {
return false;
}
try {
// Delete any existing CSS to force regeneration
delete_post_meta($page_id, '_elementor_css');
// Try to regenerate CSS using Elementor's API
if (class_exists('\Elementor\Core\Files\CSS\Post')) {
$post_css = new \Elementor\Core\Files\CSS\Post($page_id);
$post_css->update();
// Make sure we have latest Elementor file manager
if (method_exists('\Elementor\Plugin', 'instance')) {
$elementor = \Elementor\Plugin::instance();
// Clear page assets cache if method exists
if (isset($elementor->files_manager) && method_exists($elementor->files_manager, 'clear_cache')) {
$elementor->files_manager->clear_cache();
}
}
return true;
}
} catch (Exception $e) {
error_log('Elementor CSS regeneration failed: ' . $e->getMessage());
}
return false;
}
что я попробовал
Я подтвердил, что все страницы имеют _elementor_data мета -ключ на исходном сайте
Я проверил, что шаблон устанавливается на elementor_full_width на All Pages
Я использую одну и ту же версию элементарного элемента во всех достояниях < /li>
< /ol>
Что я ищу < /h2>
Почему некоторые элементарные страницы дублируют, что другие, что, то есть, не теряют их. (Инспекции домашней страницы/БПЛА) и неработающие страницы? Подозрим, что может возникнуть проблема с тем, как я обрабатываю вложенные структуры данных элементарного элемента или, возможно, не хватает некоторых необходимых мета -ключей, которые нуждаются в элементаре. Любая идея была бы очень оценена! 2048m
php max input vars: 10000
php max post Размер: 64m
gd Установлен: да
Zip Установлен: да
write ressissions: all all
elementor Библиотека: 6.8.1
== Environment ==
версия: 6.8.1
== = https://multi.alliedbooks.pk
Home URL: https://multi.alliedbooks.pk
WP Multisite: Да
Макс. /blog /%Год% /%месяц,% /%day% /%postname% /
Язык: en_us
timezone: 0
Admin Email: [email protected]
отладка: неактивная < /p>
== Theme ==
name: hello entlement
vervore: 3.3. /> Дочерняя тема: нет < /p>
== user ==
Роль: Администратор
wp profile lang: en-us
Пользовательский агент: Mozilla /5.0 (Windows NT 10.0; Win64; x64) Applewebkit/537.36 (khtml, как гекко) Chrome/135.0.0.0 Safari/537.36 EDG/135.0.0.0
== Active Plugins ==
WP File Manager
версия: 8.0.1
Автор: Mndpsing. /> == Сеть плагины ==
all-in-one wp миграция Unlimited Extension
версия: 2.59
Автор: Servmask < /p>
All-in-One WP Migration With Import
Version: 6.77
Author: ServMask
Duplicate Page
Version: 4.5.4
Author: mndpsingh287
Elementor
Version: 3.28.4
Author: Elementor.com
Forminator
Version: 1.42.2
Author: WPMU DEV
Multisite Site Creator Pro (Refactored)
Version: 2.4.0
Author: Your Name
WP File Manager
Version: 8.0.1
Author: mndpsingh287
< /code>
== Плагины обязательного использования ==
hostinger Smart Auto Updates
версия: 1.0.7
Автор: Hostinger < /p>
set-default-theme.php
Version:
Author:
== Elementor Experiments ==
Inline Font Icons: Active by default
Additional Custom Breakpoints: Active by default
Container: Active by default
Optimized Markup: Inactive by default
Load Google Fonts locally: Active by default
Header & Footer: Active by default
Nested Elements: Active by default
Editor Top Bar: Active by default
Pages Panel: Inactive by default
Element Caching: Active by default
Elementor Home Screen: Active by default
Elementor Editor Events: Inactive by default
Atomic Widgets: Inactive by default
Global Classes: Inactive by default
Launchpad Checklist: Active by default
Cloud Library: Неактивный по умолчанию < /p>
== log == < /p>
js: показ 5 из 5JS: 2025-04-23 14:47:48 [Ошибка x 7] [https://multi.alliedbooks.pk/wp-content ... 8.4:2:2913] elementor_new_template_form_controls не определяется
js: 2025-04-23 14:47 1] [https://multi.alliedbooks.pk/wp-content ... les.min.js? 48]. 14:25:21 [Ошибка x 1] [https://multi.alliedbooks.pk/wp-content ... 4:3:651345] не может прочитать свойства не определенных (чтение 'isdesignable')
Я уже упоминал, что я уже пробовал. При условии, что код плагинов обязательно используется код плагина здесь, также предоставил полную системную информацию. < /p>
должен использовать код плагина; Чтобы автоматически установить тему elementor hello по умолчанию на каждом дочернем сайте < /h4>
Подробнее здесь: https://stackoverflow.com/questions/796 ... g-inconsis
Дублирование страницы Elementor между WordPress MultiSite Specites работают непоследовательно - правильно копируют тольк ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Load_plugin_textdomain генерирует уведомление только в WordPress MultiSite
Anonymous » » в форуме Php - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Load_plugin_textdomain генерирует уведомление только в WordPress MultiSite
Anonymous » » в форуме Php - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-