[Помогите] Разбить текст на статью и комментарии

Тема в разделе "Wordpress", создана пользователем demmy, 4 авг 2011.

Статус темы:
Закрыта.
Модераторы: Sorcus
  1. demmy

    demmy

    Регистр.:
    13 ноя 2006
    Сообщения:
    330
    Симпатии:
    96
    Есть текст в несколько абзацев. Можно ли загнать его в вордпресс сделав первый абзац новостью, а остальные абзацы комментариями?
     
  2. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    Можно через XML-RPC, в админке активировать его. Пример скрипта разбивает статью на абзацы, первый абзац импортирует как новую статью в вордпрес, остальные абзацы сохраняет как комментарии.
    PHP:
    <?
    include_once(
    'IXR_Library.php');

    ini_set('max_execution_time''3000');
    header('Content-Type: text/plain; charset=utf-8');


    $post '
    Абзац (нем. Absatz — раздел, часть текста) — отрезок письменной речи, состоящий из нескольких предложений.

    Абзац, обозначая своего рода «цезуру», является единицей членения, промежуточной между фразой и главой, и служит для группировки однородных единиц изложения, исчерпывая один из его моментов (тематический, сюжетный и т. д.). Выделение фразы в особый абзац усиливает падающий на неё смысловой акцент.

    Абзац — малоисследованный компонент литературной формы, имеющий композиционное, сюжетно-тематическое, ритмическое значение и связанный со стилем автора. Характерны, например, краткие абзацы в импрессионистической прозе — симптомы раздробленности, афористичности мысли; или например возвращение к длинному абзацу в несколько страниц у М. Пруста, связанное со стернианской, так называемой «спиралевидной цикличностью» его изложения. Особенно выразителен абзац у А. Белого, который выделяет в особые абзацы даже отдельные части фразы, подчёркивая этим тематическую значимость, ритмическое развитие выделяемых частей.

    Для выделения абзаца его, помимо новой строки, печатают со строки красной, то есть отделяют вертикальным отступом от соседних абзацев и/или делают абзацный отступ.

    Контроль висячих строк — слежение за тем, чтобы при переносе абзаца на следующую страницу не получилось одинокой строки.
    '
    ;

    preg_match_all('/(.+)\r\n/'$post$a);

    //тест
    print_r($a);


    //вордпрес сайт куда импортировать
    $url 'http://wordpress/xmlrpc.php';
    //логин того кто постит
    $user 'admin';
    //и пароль
    $pass 'admin';
    //ид блога 1 если один сайт, если мултисайты то выбрать нужный
    $blog_id 1;

    //анонимусы комментаторы, будем брать любой
    $c_author = array('Амёба''Спаммер''Онотоли''Инфузория-туфелька');

    //конвертирует html коды в текст если надо
    function decode($str) {
        
    $str trim(html_entity_decode($strENT_QUOTES'UTF-8'));
        return 
    $str;
    }

    $client = new IXR_Client($url);
    $date = new IXR_Date(date("Ymd\TH:i:s"));

    //Импортируем первый абзац
    $client->query('metaWeblog.newPost'$blog_id$user$pass,
                 array(
    'post_status' => 'publish',
                       
    'title' => decode('Название поста'),
                       
    'description'=> decode($a[1][0]),
                       
    //Категории должны существовать в wordpress базе, поэтому перед импортом надо создать нужные категории
                       
    'categories'  => array('Категория поста один''Категория два''aa'),
                       
    'mt_keywords'  => ('тег один, тег два, тег три'),
                       
    'dateCreated' => $date->IXR_Date(date("Ymd\TH:i:s"))), 1);
    $p_id $client->getResponse();

    //Если заимпортирует то вернёт ид поста и можно к нему делать комментарии
    if($p_id == intval($p_id)){
        echo 
    "Post id: ".$p_id;
        
        
    //цикл по абзацам
        
    foreach($a[1] as $id=>$comm){
            
    //пропускаем первый
            
    if($id==0)continue;
            
            
    //если надо подождать пару секунд, тогда
            //sleep(2);
            
            //постим комментарий
            
    $client->query('wp.newComment'$blog_id""""$p_id,
                         array(
    0,
                               
    'content' => decode($comm),
                               
    //автор случайный из массива
                               
    'author'=> decode($c_author[rand(0count($c_author)-1)]),
                               
    //если надо постить сайт автора комментария, то откоментировать
                                //'author_url'=>'http://example.com',
                                
    'author_email' => decode('anonymous@example.com'),
                                ), 
    1);
            
    $c_id $client->getResponse();
            
            
    //коммент запостили
            
    if(!is_array($c_id) && $c_id == intval($c_id)){
                echo 
    ", comment id: ".$c_id;
                
    //одобряем комментарий
                
    $client->query('wp.editComment'$blog_id$user$passintval($c_id), array('status' => 'approve'), 1);
                
    $c_approved $client->getResponse();
                echo 
    ", approved";
                
            }else{
                
    //ошибка
                
    echo ", comment error on row id: ".$row_post_c['id'];
                
    print_r($c_id);
                exit();
            }
        }
        
    }

    ?>
    во время импорта надо отключить проверку флуда комментариев и разрешить анонимные комментарии, вложил два плагина
     

    Вложения:

    • import.7z
      Размер файла:
      11,3 КБ
      Просмотров:
      10
    demmy нравится это.
  3. demmy

    demmy

    Регистр.:
    13 ноя 2006
    Сообщения:
    330
    Симпатии:
    96
    Спасибо, решение интересное.
    Осталось заставить его брать информацию об авторе, заголовке и тегах из файла и можно жить.
     
Статус темы:
Закрыта.