Сохранять только изменяемую запись

Рейтинг: 0Ответов: 1Опубликовано: 26.02.2023

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

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');

Ответы

▲ 0

Сделал, спасибо.

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');