Массовое редактирование страниц Elementor для удаления/редактирования чего-либо (контейнера/виджета)Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Массовое редактирование страниц Elementor для удаления/редактирования чего-либо (контейнера/виджета)

Сообщение Anonymous »

Я пытаюсь создать пользовательскую функцию в WordPress для массового удаления определенного контейнера Elementor с определенным идентификатором со всех страниц, которые его используют (поскольку он был вставлен вручную на сотни страниц).
когда я использую этот код с json_decode/json_encode, посты обновляются путем удаления нужного элемента, но потом кажется, что страницы имеют ошибки и отображаются некорректно (графика), я думаю это из-за того, что Elementor использует определенные функции.

Код: Выделить всё

function bulk_remove_elementor_widget_with_log() {
$log = '';

$posts = get_posts(array(
'post_type' => 'post',
'meta_key' => '_elementor_data',
'post_status' => 'publish',
'numberposts' => -1,
));

if (empty($posts)) {
return "Not found.";
}

foreach ($posts as $post) {
$log .= "Processing post ID: " . $post->ID . " - " . $post->post_title . "\n";

$result = remove_elementor_widget_by_id_with_log($post->ID);

if ($result) {
$log .= "Element post ID: " . $post->ID . "\n";
} else {
$log .= "Element post ID: " . $post->ID . "\n";
}
}

return $log;
}

if (!function_exists('search_and_remove_widget')) {

function search_and_remove_widget($elements, &$found) {
foreach ($elements as $key => &$element) {

if (isset($element['id']) && $element['id'] === '4132e9d6') {
unset($elements[$key]);
$found = true;
}
if (isset($element['elements'])) {
$element['elements'] = search_and_remove_widget($element['elements'], $found);
}
}
return $elements;
}
}

function remove_elementor_widget_by_id_with_log($post_id) {
$elementor_data = get_post_meta($post_id, '_elementor_data', true);

$elementor_data = json_decode($elementor_data, true);

$found = false;

$new_elementor_data = search_and_remove_widget($elementor_data, $found);

if ($found) {
$new_elementor_data = json_encode($new_elementor_data);

update_post_meta($post_id, '_elementor_data', $new_elementor_data);
}

return $found;
}
Можете ли вы помочь мне понять, какие функции использовать?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ner-widget
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»