3

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 something 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>
5
  • And have you looked at your exported file to make sure it actually contains hundreds of correctly formatted XML entries?
    – jrothafer
    Apr 15, 2015 at 14:02
  • I have, and it does.
    – Ty Morton
    Apr 15, 2015 at 20:11
  • suggest you run the output through an RSS validator... validator.w3.org/feed Wonder if more elements need to be wrapped in {exp:xml_encode}
    – AllInOne
    Apr 16, 2015 at 22:37
  • Thank you for sharing your codes on how to migrate EE to WP. However when I checked the xml rendered it seems the description and link blocks is all over the code. I just copy and paste the way you posted the solution here. Can you help me please to figure it out what is my mistake? Regards, Jayson
    – Jayson
    Aug 29, 2018 at 1:59
  • Jayson, you'll be better off posting a new question of your own and outlining specific details about the problem, any errors, and where you're stuck.
    – Alex Kendrick
    Aug 30, 2018 at 16:26

1 Answer 1

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 and acknowledge that you have read and understand our privacy policy and code of conduct.

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