Как мне проанализировать XML-файл из WordPress для использования в другой CMS?

#php #xml #wordpress #parsing #modx

#php #xml #wordpress #Синтаксический анализ #modx

Вопрос:

Я обнаружил, что ресурсов для этого мало. Я использую MODX в качестве CMS и хочу перенести свои существующие блоги из WordPress и использовать их в новой CMS. Ресурсов для перехода с MODX на WP предостаточно, но есть только один опубликованный метод для перехода с WP на MODX, использующий метод Articles, который, к сожалению, больше не работает. Связано ли это с тем, что статьи не обновлялись или XML-файл из WP несовместим.

В любом случае, мне остается пытаться сделать это по старинке, и я не смогу перенести каждую статью по одной. Я хочу узнать, как взять экспортированный XML-файл из WP и проанализировать его в MODX, возможно, используя PHP. Но я не уверен, с чего начать.

Любые предложения были бы полезны … да, я уже пробовал Google. Я не уверен, с чего начать.

Спасибо!

Ответ №1:

Здесь вам может быть полезен фрагмент кодаgetFeed. Вы можете взять его код, немного изменить и обработать элементы ленты WP, что-то вроде следующего:

 if (!empty($url) amp;amp; $modx->getService('rss', 'xmlrss.modRSSParser')) {
    $rss = $modx->rss->parse($url);
    if (!empty($rss) amp;amp; isset($rss->items)) {
        while (list($itemKey, $item) = each($rss->items)) {
            foreach ($item as $k => $v) {
                $item[$k] = str_replace(array('[',']'),array('amp;#91;','amp;#93;'),$item[$k]);
            }
            /// process rss items here  
            // f.e. add new modx resources
            $newArticle = $this->modx->newObject('modResource'); //new article
            $newArticle->set( 'template', ARTICLE_TEMPLATE_ID ); // replace ARTICLE_TEMPLATE_ID with actual article template id
            $newArticle->set( 'pagetitle', $item['title'] ); // pagetitle
            $newArticle->set( 'parent', ARTICLE_CONTAINTER_ID);
            $newArticle->set( 'content', $item['description'] );

            //add other valuable fields

            if(!$newArticle->save()){
                // modx error
            }

    }
}