Поддержка Проблемы и решения Сохранять только изменяемую запись

  • Есть скрипт, который удаляет известные ссылки из текста записи нужной записи, он работает. Как сделать, чтобы сохранялись только измененные записи, а не все?

    include_once('simple_html_dom.php');
    function links_remove() {
    $links_mass = json_decode(file_get_contents('exlinks.json'));
    $allurl = json_decode(file_get_contents('links.json'));

    foreach((array) $allurl as $jurl) {
    $id = url_to_postid($jurl);
    $post = get_post($id);
    $content = wpautop($post->post_content);
    $html = str_get_html($content);
    foreach($html->find('a') as $element) {
    foreach($links_mass as $link) {
    if (strpos($element->href, $link) !== false) {
    $element->outertext = $element->innertext;
    }
    }
    }
    $post->post_content = (string) $html->save();
    wp_update_post($post);
    }
    }

    add_action ('init', 'links_remove');

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Попробуйте так:

    include_once('simple_html_dom.php');
    
    function links_remove() {
    $links_mass = json_decode(file_get_contents('exlinks.json'));
    $allurl = json_decode(file_get_contents('links.json'));
    
    foreach ((array) $allurl as $jurl) {
    $id = url_to_postid($jurl);
    $post = get_post($id);
    $content = wpautop($post->post_content);
    $html = str_get_html($content);
    $changed = false;
    foreach ($html->find('a') as $element) {
    foreach ($links_mass as $link) {
    if (strpos($element->href, $link) !== false) {
    $element->outertext = $element->innertext;
    $changed = true;
    }
    }
    }
    if ($changed) {
    // Сохраняем измененную запись.
    $post->post_content = (string) $html->save();
    wp_update_post($post);
    }
    }
    }
    
    add_action('init', 'links_remove');

    Сообщите о результате.

    Работает, спасибо!

    Хорошо. Поставьте статус: решённая.

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Тема «Сохранять только изменяемую запись» закрыта для новых ответов.