Question

I'm working with a client that wants to migrate from ExpressionEngine to WordPress. I have an EE template that is supposed to (and seems to) generate a WP XML Import file.

However, when I import the file into my new WP installation, only the very last entry is imported. Everything associated with that entry is correct, but it skips the hundreds of posts that precede it.

Here is my EE template code. Is there some WP syntax that I'm missing?:

<?xml version="1.0" encoding="UTF-8" ?>
<!-- This is a WordPress eXtended RSS file generated by WordPress as an export of your site. -->
<!-- It contains information about your site's posts, pages, comments, categories, and other content. -->
<!-- You may use this file to transfer that content from one site to another. -->
<!-- This file is not intended to serve as a complete backup of your site. -->

<!-- To import this information into a WordPress site follow these steps: -->
<!-- 1. Log in to that site as an administrator. -->
<!-- 2. Go to Tools: Import in the WordPress admin panel. -->
<!-- 3. Install the "WordPress" importer from the list. -->
<!-- 4. Activate & Run Importer. -->
<!-- 5. Upload this file using the form provided on that page. -->
<!-- 6. You will first be asked to map the authors in this export file to users -->
<!--    on the site. For each author, you may choose to map to an -->
<!--    existing user on the site or to create a new user. -->
<!-- 7. WordPress will then import each of the posts, pages, comments, categories, etc. -->
<!--    contained in this file into your site. -->

<!-- generator="WordPress/3.3.2" created="2012-06-25 23:09" -->
<rss version="2.0"
    xmlns:excerpt="http://wordpress.org/export/1.1/excerpt/"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:wp="http://wordpress.org/export/1.1/"
>

<channel>
    <title>{site_name}</title>
    <link>{site_url}</link>
    <description></description>
    <pubDate></pubDate>
    <language>en</language>
    <wp:wxr_version>1.1</wp:wxr_version>
    <wp:base_site_url>http://domain.com/</wp:base_site_url>
    <wp:base_blog_url>http://domain.com/</wp:base_blog_url>

    <generator>http://wordpress.org/?v=3.3.2</generator>
{exp:channel:entries {if segment_3 != ""}channel="{segment_3}"{/if} orderby="date" sort="desc" limit="500" rdf="off" }


    <item>
        <title>{exp:xml_encode}{title}{/exp:xml_encode}</title>
        <link></link>
        <pubDate>{entry_date format="%r"}</pubDate>
        <dc:creator><![CDATA[{author}]]></dc:creator>
        <guid isPermaLink="false">http://domain.com/?p={entry_id}</guid>

        <description></description>


        <excerpt:encoded><![CDATA[{summary}]]></excerpt:encoded>
        <content:encoded><![CDATA[{body} 
         ]]></content:encoded>

{categories}
        <category domain="category" nicename="{category_url_title}"><![CDATA[{category_name}]]></category>
{/categories}

        <wp:post_type>post</wp:post_type>
        <wp:post_id></wp:post_id>
        <wp:post_date>{entry_date format="%Y-%m-%d %H:%i:%s"}</wp:post_date>
        <wp:post_date_gmt>{gmt_date format="%Y-%m-%d %H:%i:%s"}</wp:post_date_gmt>
        <wp:comment_status>open</wp:comment_status>
        <wp:ping_status>open</wp:ping_status>
        <wp:post_name>{url_title}</wp:post_name>
        <wp:status>{if status == "open"}publish{if:elseif status == "review"}pending{if:elseif status == "closed"}private{if:elseif status == "draft"}draft{if:else}publish{/if}</wp:status>
        <wp:post_parent>0</wp:post_parent>
        <wp:menu_order>0</wp:menu_order>
        <wp:post_password></wp:post_password>
        <wp:is_sticky>0</wp:is_sticky>
        <wp:postmeta>
            <wp:meta_key>_edit_last</wp:meta_key>
            <wp:meta_value><![CDATA[1]]></wp:meta_value>
        </wp:postmeta>
        <wp:postmeta>
            <wp:meta_key>_su_rich_snippet_type</wp:meta_key>
            <wp:meta_value><![CDATA[none]]></wp:meta_value>
        </wp:postmeta>
        <wp:postmeta>
            <wp:meta_key>_encloseme</wp:meta_key>
            <wp:meta_value><![CDATA[1]]></wp:meta_value>
        </wp:postmeta>
    </item>
{/exp:channel:entries}
</channel>
</rss>
Was it helpful?

Solution

I found the answer. The way the XML file was being rendered, there was no line break between the item closing tag, and the next item's opening tag (</item><item>).

This passed all validation tests, but WP wouldn't process it properly. I added the line breaks, and everything worked as expected.

Thanks to everyone for the effort!

ty

Licensed under: CC-BY-SA with attribution
Not affiliated with wordpress.stackexchange
scroll top