Updating with more rake tweaks and some post customizations
This commit is contained in:
parent
39914c83c9
commit
5d96f3a336
13
README.rdoc
13
README.rdoc
|
@ -1,8 +1,10 @@
|
|||
= Wordpress-import
|
||||
|
||||
Fork of Marc Remolt's Refinerycms-wordpress-import ( https://github.com/mremolt/refinerycms-wordpress-import )
|
||||
This little project is an importer for WordPress XML dumps into Rails.
|
||||
|
||||
This little project is an importer for WordPress XML dumps into Rails
|
||||
It's been somewhat customized for one particular project; you probably want to fork this and modify it to fit your app's schema.
|
||||
|
||||
It's a fork of Marc Remolt's Refinerycms-wordpress-import ( https://github.com/mremolt/refinerycms-wordpress-import )
|
||||
|
||||
You can find the source code on github: https://github.com/zyphlar/wordpress-import
|
||||
|
||||
|
@ -11,11 +13,6 @@ If your site (blog) structure uses new urls, the links WILL break! For example,
|
|||
the popular WP blog url structure "YYYY-MM/slug", be warned that Refinery just uses "blog/slug".
|
||||
So your inner site links will point to the old WP url.
|
||||
|
||||
== TODO
|
||||
- tags
|
||||
- attachments
|
||||
- what about wordpress suffixes like -300x290 ?
|
||||
|
||||
== Prerequisites
|
||||
|
||||
TODO
|
||||
|
@ -29,7 +26,7 @@ Just add the gem to your projects Gemfile:
|
|||
|
||||
Or if you want to stay on the bleeding edge:
|
||||
|
||||
gem 'wordpress-import', :git => 'git://github.com/zyphlarz/wordpress-import.git'
|
||||
gem 'wordpress-import', :git => 'git://github.com/zyphlar/wordpress-import.git'
|
||||
|
||||
and run
|
||||
|
||||
|
|
|
@ -13,9 +13,9 @@ namespace :wordpress do
|
|||
end
|
||||
|
||||
desc "import blog data from a WordPressImport XML dump"
|
||||
task :import_blog, :file_name do |task, params|
|
||||
task :import_blog, :file_name, :blog_slug do |task, params|
|
||||
Rake::Task["environment"].invoke
|
||||
p "Loading XML from #{params[:file_name]} ..."
|
||||
p "Loading XML from #{params[:file_name]} (using blog #{params[:blog_slug]}) ..."
|
||||
dump = WordPressImport::Dump.new(params[:file_name])
|
||||
|
||||
p "Importing #{dump.authors.count} authors ..."
|
||||
|
@ -31,14 +31,14 @@ namespace :wordpress do
|
|||
p "(export ONLY_PUBLISHED=true to import only published posts)"
|
||||
end
|
||||
|
||||
dump.posts(only_published).each(&:to_rails)
|
||||
dump.posts(only_published).each{|p| p.to_rails(params[:blog_slug]) }
|
||||
end
|
||||
|
||||
desc "reset blog tables and then import blog data from a WordPressImport XML dump"
|
||||
task :reset_and_import_blog, :file_name do |task, params|
|
||||
task :reset_and_import_blog, :file_name, :blog_slug do |task, params|
|
||||
Rake::Task["environment"].invoke
|
||||
Rake::Task["wordpress:reset_blog"].invoke
|
||||
Rake::Task["wordpress:import_blog"].invoke(params[:file_name])
|
||||
Rake::Task["wordpress:import_blog"].invoke(params[:file_name], params[:blog_slug])
|
||||
end
|
||||
|
||||
|
||||
|
@ -129,19 +129,12 @@ namespace :wordpress do
|
|||
end
|
||||
|
||||
desc "reset and import all data (see the other tasks)"
|
||||
task :full_import, :file_name do |task, params|
|
||||
task :full_import, :file_name, :blog_slug do |task, params|
|
||||
Rake::Task["environment"].invoke
|
||||
Rake::Task["wordpress:reset_and_import_blog"].invoke(params[:file_name])
|
||||
Rake::Task["wordpress:reset_and_import_blog"].invoke(params[:file_name],params[:blog_slug])
|
||||
#Rake::Task["wordpress:reset_and_import_pages"].invoke(params[:file_name])
|
||||
#Rake::Task["wordpress:reset_import_and_replace_media"].invoke(params[:file_name])
|
||||
Rake::Task["wordpress:import_and_replace_media"].invoke(params[:file_name])
|
||||
end
|
||||
|
||||
|
||||
desc "Local First master import (no resets)"
|
||||
task :lfa_import, :file_name do |task, params|
|
||||
Rake::Task["environment"].invoke
|
||||
Rake::Task["wordpress:import_blog"].invoke(params[:file_name])
|
||||
Rake::Task["wordpress:import_and_replace_media"].invoke(params[:file_name])
|
||||
end
|
||||
end
|
||||
|
|
|
@ -38,6 +38,9 @@ module WordPressImport
|
|||
user.password_confirmation = 'password'
|
||||
end
|
||||
user.save
|
||||
|
||||
puts "User #{login} imported."
|
||||
|
||||
user
|
||||
end
|
||||
end
|
||||
|
|
|
@ -13,6 +13,10 @@ module WordPressImport
|
|||
"WordPress::Page(#{post_id}): #{title}"
|
||||
end
|
||||
|
||||
def link
|
||||
node.xpath("link").text
|
||||
end
|
||||
|
||||
def title
|
||||
node.xpath("title").text
|
||||
end
|
||||
|
|
|
@ -29,7 +29,8 @@ module WordPressImport
|
|||
end
|
||||
end
|
||||
|
||||
def to_rails
|
||||
# blog_slug is used to identify which blog this import is from
|
||||
def to_rails(blog_slug)
|
||||
|
||||
user = ::User.find_by_wp_username(creator)
|
||||
|
||||
|
@ -37,34 +38,24 @@ module WordPressImport
|
|||
raise "User with wp_username #{creator} not found"
|
||||
end
|
||||
|
||||
post = ::Post.find_or_initialize_by(:id => post_id, :slug => post_name)
|
||||
|
||||
post.assign_attributes(
|
||||
post = ::Post.create({
|
||||
:wp_post_id => post_id, :slug => post_name,
|
||||
:user_id => user.id, :title => title,
|
||||
:created_at => post_date,
|
||||
:published_at => publish_date)
|
||||
# :body => content_formatted taken care of by translation below
|
||||
|
||||
if post.translations.blank?
|
||||
translation = post.translations.build
|
||||
else
|
||||
translation = post.translations.first
|
||||
end
|
||||
|
||||
translation.locale = "en"
|
||||
translation.title = title
|
||||
translation.body = content_formatted
|
||||
|
||||
# merge the translation's category list with the wordpress post's
|
||||
translation.category_list |= categories.collect(&:name)
|
||||
# and tags
|
||||
translation.category_list |= tags.collect(&:name)
|
||||
|
||||
translation.save
|
||||
|
||||
post.save
|
||||
:published_at => publish_date,
|
||||
:wp_link => link,
|
||||
:wp_blog => blog_slug,
|
||||
:translations_attributes => { "0" => {
|
||||
:locale => "en",
|
||||
:title => title,
|
||||
:body => content_formatted,
|
||||
# merge the translation's category list with the wordpress post's
|
||||
:category_list => categories.collect(&:name) | tags.collect(&:name)
|
||||
}}
|
||||
})
|
||||
|
||||
if post.errors.blank?
|
||||
puts "Post #{post_name} imported."
|
||||
return post.reload
|
||||
else
|
||||
puts post.inspect
|
||||
|
|
Loading…
Reference in New Issue
Block a user