0

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>
  • Have you checked that the actual exported XML file has all the entries? And then run it through a validator? – TheDeadMedic Apr 15 '15 at 13:10
  • Yes, the XML file looks right, and passes validation. That's why I'm thinking it must be some WP syntax issue. – Ty Morton Apr 15 '15 at 13:36
0

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.