Парсинг заголовков и url в записи.
У меня есть спаршеные записи но плагин парсит заголовки не так как надо было. А url и вовсе не тянет.
Я используя библиотеку simple_html_dom вывожу нужные заголовки и url с сайта.
Но не могу правильно их переписать в существующие записи.
То есть не стоит цель спарсить всё заново, а лишь переписать заголовки с url.
$html = file_get_html('ссылка на страницу сайта с ссылками на запипи');
$my_posts = get_posts('category=7'); //Категория рубрик
foreach($html->find('.art_list a') as $html_title) // Находим и перебираем нужные теги
{
echo '<a href="'. $html_title->href .'">'.$html_title->plaintext.'</a>';
//Выводит ссылки с сайта (не обязательно, просто, чтобы увидеть какие данные мы получаем)
foreach ($my_posts as $post) //Перебераем посты
{
$my_post = [
'ID' => $post->ID,
'post_title' => $html_title->plaintext,
'post_name' => substr($html_title->href, 25)
];//Записываем данные для постов
wp_update_post(wp_slash($my_post)); //Перезаписываем
}
}
Казалось бы всё работает но, на самом деле оно на каждый пост записывает данные последнего найденой ссылки с другого сайта.
То есть у меня есть в 7 категории 3 поста, и после перезаписи у всех один и тот же заголовок и url.
Не понимаю как грамотно построить алгоритм.
Ну так у вас так скрипт и работает.
Вы получаете какие-то $html_title-ы проходитесь по ним в цикле и каждый раз результат записываете всем своим $my_posts.
Естественно у вас последний результат записывается вашим трем постам.
На самом деле, совершенно не понятна задумка.
Например если у вас ссылок больше чем записей.
$html = file_get_html('ссылка на страницу сайта с ссылками на запипи'); $my_posts = get_posts('category=7'); //Категория рубрик //foreach($html->find('.art_list a') as $html_title) // Находим и перебираем нужные теги foreach($html->find('.art_list a') as $n => $html_title) { echo '<a href="'. $html_title->href .'">'.$html_title->plaintext.'</a>'; //Выводит ссылки с сайта (не обязательно, просто, чтобы увидеть какие данные мы получаем) /*foreach ($my_posts as $post) //Перебераем посты {*/ $my_post = [ 'ID' => /*$post*/$my_posts[$n]->ID, 'post_title' => $html_title->plaintext, 'post_name' => substr($html_title->href, 25) ];//Записываем данные для постов wp_update_post(wp_slash($my_post)); //Перезаписываем /*}*/ }Спасибо вам за ответ. Вообще сначала планировал парсить посты. Но так как вставл в тупик не понимал как мне ещё и контент достать, решил просто переписать титлы и урлы. Нооо потом я придумал как достать и контент и создать заново посты.
<?php include "путь/simple_html_dom.php"; require_once (dirname(__FILE__) . '/wp-load.php'); require_once (dirname(__FILE__) . '/wp-admin/includes/admin.php'); $html = file_get_html('ссылка на страницу с ссылками на посты'); foreach($html->find('.art_list .art-tpl__title a') as $html_title) { $html_post = file_get_html('домен'.$html_title->href); echo '<a href="'. $html_title->href .'">'.$html_title->plaintext.'</a></br>'; foreach($html_post->find('#printMe') as $html_post_print_me) { // echo '<div>'. $html_post_print_me->plaintext .'</div>'; $post_data = [ 'post_name' => substr($html_title->href, 31), 'post_title' => $html_title->plaintext, 'post_content' => $html_post_print_me, 'post_status' => 'publish', 'post_category' => [10], ]; $post_id = wp_insert_post($post_data); } } ?>И таким образом я с нужными заголовками и url спарсил 6к статей с оригинального сайта.
P.S да и вообще я бы с этим делом не заморачивался, но так как от заказчика стояла задача и url перенести, пришлось придумывать решение. Ибо имеющиеся плагины этой функции не предоставляют.