Module: Jekyll::WordPress
- Defined in:
- lib/jekyll/converters/wordpress.rb
Class Method Summary collapse
-
.process(dbname, user, pass, host = 'localhost', table = "wp_posts") ⇒ Object
Reads a MySQL database via Sequel and creates a post file for each post in “table” that has post_status = ‘publish’.
Class Method Details
.process(dbname, user, pass, host = 'localhost', table = "wp_posts") ⇒ Object
Reads a MySQL database via Sequel and creates a post file for each post in “table” that has post_status = ‘publish’. This restriction is made because ‘draft’ posts are not guaranteed to have valid dates.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/jekyll/converters/wordpress.rb', line 18 def self.process(dbname, user, pass, host = 'localhost', table = "wp_posts") db = Sequel.mysql(dbname, :user => user, :password => pass, :host => host) FileUtils.mkdir_p "_posts" sql = "SELECT * FROM #{table} WHERE post_status = 'publish' and post_type = 'post'" db[QUERY].each do |post| # Get required fields and construct Jekyll compatible name title = post[:post_title] #sanitize slug = post[:post_name].gsub(/\//,'_') date = post[:post_date] content = post[:post_content] name = "%02d-%02d-%02d-%s.html" % [date.year, date.month, date.day, slug] # Get the relevant fields as a hash, delete empty fields and convert # to YAML for the header data = { 'layout' => 'post', 'title' => title.to_s, 'excerpt' => post[:post_excerpt].to_s, 'wordpress_id' => post[:ID], 'wordpress_url' => post[:guid] }.delete_if { |k,v| v.nil? || v == ''}.to_yaml # Write out the data and content to file File.open("_posts/#{name}", "w") do |f| f.puts data f.puts "---" f.puts content end end end |