Saturngod

What's on my mind

Wordpress To Wintersmith

After moving to the wintersmith from wordpress, I have two problem.

  1. need to redirect old url to new url
  2. re-import old comments to new url
  3. re-import old images
[...]

Worpdress to Tumblr

If you are using wordpress , you can export easily to Tumblr.

First , download the wordpress export file. Tools > Export in wordpress dashboard.

Screen_shot_2012-09-04_at_11

You will receive the xml file after downloading.

You need to install python to use wordpress to tumblr script. If you are using Linux or Mac, python already support in OS and no need to install.

Download the script from wp2tumblr.

After unzip, you will see wp2tumblr.py file. Open the terminal and go to the directory of wp2tumblr.py

[gist id=”3616374”]
Tumblr only allow 100 posts per day. If you have more than 100 posts , you can start this script again and change the -s . So, don’t forget about the latest export number. If you forget , you need to start from 0 again at next day.

Facebook Like WP Plugin

Facebook like is a wordpress plugin for facebook like plugins.

Feature

  • Layout Detail
  • Customize Show in page,post,front end Technology

  • PHP

  • Wordpress

Update Facebook Like WP Plugin

Now Support Layout in Plugins. You can your facebook like button layout.

http://downloads.wordpress.org/plugin/facebook-like.zip

Facebook like on WP Plugin

Yay... today... I got approve from wordpress. Now, you can install from wordpress plugins website.

http://wordpress.org/extend/plugins/facebook-like/

Facebook Like WP-Plugin -- Update

Version 0.5

======== Support XFBML with Application ID *Confilt with Facebook Share and Fan Page Old Code if you use XFBML

facebooklike wordpress plugin

facebook like

I made the plugin. You can try it. First ,you need to do setting in WP-Admin > Settings > Facebook Like

I will upgrade some feature soon.

Download facebooklike Plugin

Latest Version

Allow Post WP Plugin

Wordpress doesn't allow some tag in post. If you want to use class in img tag, you will lost class attributes when you publish (only admin not lost). So, allowposttags plugin can allow attributes and new tags in wordpress. You just edit in allowposttags.php file.

Technology

Force Publish Schedule

Force publish schedule is a schedule status to publish. It is useful for events wordpress page.

Feature:

  • Admin Panel Include
  • Can publish selected post
  • Can publish all post Technology

  • PHP

  • Wordpress Link

  • Wordpress Plugin Site

Harbari to Wordpress PHP Code

Copy the following code and create wp_convert.php in habari folder. It's using habari class for connection database, tag,comment,etc. You need to add wordpress database name,username and password in there. After that run wp_convert.php and convert all post to the wordpress database. Habari don't have category and all the post will under categorize.  I got that code from [http://chrismeller.com/user/files/2009/08/wp_migrate_script.php](http://chrismeller.com/user/files/2009/08/wp_migrate_script.php)
<?php

// config info
$import = array(
‘wp_host’ => ‘localhost’,    // hostname
‘wp_user’ => ‘wordpress’,    // username
‘wp_pass’ => ‘wordpress’,    // password
‘wp_name’ => ‘wordpress’,    // name of the database
‘wpprefix’ => ‘wp‘,        // table prefix
);

echo ‘<pre>’;

// keep habari from executing
define( ‘UNIT_TEST’, true );

// bootstrap it
include( ‘index.php’ );

// create a connection to our wordpress database
try {
$wpdb = DatabaseConnection::ConnectionFactory( "mysql:host=" . $import[‘wp_host’] . ";dbname=" . $import[‘wp_name’] );
$wpdb->connect( "mysql:host=" . $import[‘wp_host’] . ";dbname=" . $import[‘wp_name’], $import[‘wp_user’], $import[‘wp_pass’] );
}
catch( Exception $e ) {
die(‘Unable to connect to WordPress database. ‘ . $e->getMessage());
}

// users

$habari_users = Users::get();    // get all the habari users
$wp_users = array();

foreach ( $habari_users as $habari_user ) {

// see if the user exists already in WordPress
$wp_user = $wpdb->get_row( ‘select id, user_login from ‘ . $import[‘wp_prefix’] . ‘users where user_login = ?’, array( $habari_user->username ) );

// if it doesn’t, create it
if ( !$wp_user ) {

$wpdb->query( ‘insert into ‘ . $import[‘wp_prefix’] . ‘users (
user_login,
user_pass,
user_nicename,
user_email,
user_registered,
display_name
) values ( ?, ?, ?, ?, UTC_TIMESTAMP(), ? ) ‘, array(
$habari_user->username,
$habari_user->password,
$habari_user->username,
$habari_user->email,
$habari_user->info->displayname
)
);

$wp_users[ $habari_user->username ] = $wpdb->last_insert_id();

echo ‘Created user ‘ . $habari_user->username . ‘ with id ‘ . $wpdb->last_insert_id() . "n";

}
else {

echo ‘Found existing user ‘ . $wp_user->user_login . ‘ with id ‘ . $wp_user->id . "n";

$wp_users[ $wp_user->user_login ] = $wp_user->id;

}

}

// posts and pages

// get the total number of posts, either published or draft
$total_posts = Posts::get( array( ‘count’ => true, ‘ignore_permissions’ => true, ‘content_type’ => array( ‘entry’, ‘page’ ), ‘status’ => array( ‘published’, ‘draft’ ) ) );
$wp_posts = array();

echo ‘Total Posts: ‘ . $total_posts . "n";

for ( $i = 0; $i < $total_posts / 10; $i++ ) {

$posts = Posts::get( array( ‘limit’ => 10, ‘offset’ => $i  10, ‘ignore_permissions’ => true, ‘content_type’ => array( ‘entry’, ‘page’ ), ‘status’ => array( ‘published’, ‘draft’ ) ) );

echo ‘Got ‘ . count( $posts ) . ‘ posts’ . "n";

foreach ( $posts as $post ) {

$insert_query = ‘insert into ‘ . $import[‘wp_prefix’] . ‘posts (
post_author,
post_date,
post_date_gmt,
post_content,
post_title,
post_status,
comment_status,
post_name,
post_modified,
post_modified_gmt,
guid,
post_type
) values (
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
)’;

$insert_params = array(
$wp_users[ $post->author->username ],                    // post author ID, converted to the WordPress user’s
$post->pubdate->format( ‘Y-m-d H-i-s’ ),
gmdate( ‘Y-m-d H-i-s’, $post->pubdate->int ),
$post->content,
$post->title,
Post::status_name( $post->status ) == ‘published’ ? ‘publish’ : Post::status_name( $post->status ),                        // post status (published or draft, basically), converted to a string
$post->info->comments_disabled ? ‘closed’ : ‘open’,
$post->slug,
$post->modified->format( ‘Y-m-d H-i-s’ ),
gmdate( ‘Y-m-d H-i-s’, $post->modified->int ),
$post->guid,
Post::type_name( $post->content_type ) == ‘entry’ ? ‘post’ : ‘page’
);

$result = $wpdb->query( $insert_query, $insert_params );

if ( !$result ) {
echo ‘Failed to insert post ‘ . $post->slug . "n";
}
else {
$wp_posts[ $post->id ] = $wpdb->last_insert_id();
}

}

}

// tags

// here we don’t use the habari API because it would be cumbersome - if only it were as robust as the Posts API is…
$total_tags = DB::get_value( ‘select count() from {tags}’ );
$wp_tax = array();

echo ‘Total Tags: ‘ . $total_tags . "n";

for ( $i = 0; $i < $total_tags / 10; $i++ ) {

$tags = DB::get_results( ‘select id, tag_text, tag_slug from {tags} order by id limit 10 offset ‘ . $i  10 );

echo ‘Got ‘ . count( $tags ) . ‘ tags’ . "n";

foreach ( $tags as $tag ) {

// first, see if it already exists as a term in WordPress
$wp_tag = $wpdb->get_row( ‘select term_id, name, slug from ‘ . $import[‘wp_prefix’] . ‘terms where slug = ?’, array( $tag->tag_slug ) );

if ( !$wp_tag ) {

$insert_query = ‘insert into ‘ . $import[‘wp_prefix’] . ‘terms ( name, slug ) values ( ?, ? )’;
$insert_params = array( $tag->tag_text, $tag->tag_slug );

$wpdb->query( $insert_query, $insert_params );

//$wp_tags[ $tag->tag_slug ] = $wpdb->last_insert_id();

$tag_id = $wpdb->last_insert_id();

}
else {

//$wp_tags[ $wp_tag->slug ] = $wp_tag->term_id;

$tag_id = $wp_tag->term_id;

}

// and either way, make sure it’s actually specified as a part of the tag taxonomy
$wp_taxonomy = $wpdb->get_row( ‘select term_taxonomy_id from ‘ . $import[‘wp_prefix’] . ‘term_taxonomy where taxonomy = ? and term_id = ?’, array( ‘post_tag’, $tag_id ) );

if ( !$wp_taxonomy ) {

$insert_query = ‘insert into ‘ . $import[‘wp_prefix’] . ‘term_taxonomy ( term_id, taxonomy ) values ( ?, ? )’;
$insert_params = array( $tag_id, ‘post_tag’ );

$wpdb->query( $insert_query, $insert_params );

$wp_tax[ $tag->id ] = $wpdb->last_insert_id();

}
else {

$wp_tax[ $tag->id ] = $wp_taxonomy->term_taxonomy_id;

}

}

}

// now we have to link all our tags and posts

$total_joins = DB::get_value( ‘select count() from {tag2post}’ );

echo ‘Total Tag to Post relationships: ‘ . $total_joins . "n";

for ( $i = 0; $i < $total_joins / 10; $i++ ) {

// get the joins
$joins = DB::get_results( ‘select tag_id, post_id from {tag2post} order by tag_id, post_id limit 10 offset ‘ . $i  10 );

echo ‘Got ‘ . count( $joins ) . ‘ relationships’ . "n";

foreach ( $joins as $join ) {

// if it’s not in the list of posts we imported earlier, skip it - it’s probably a different content type
if ( !array_key_exists( $join->post_id, $wp_posts ) ) {
continue;
}

$insert_query = ‘insert into ‘ . $import[‘wp_prefix’] . ‘term_relationships ( object_id, term_taxonomy_id ) values ( ?, ? )’;
$insert_params = array( $wp_posts[ $join->post_id ], $wp_tax[ $join->tag_id ] );

$wpdb->query( $insert_query, $insert_params );

}

}

// update the tag counts
$wpdb->query( ‘update ‘ . $import[‘wp_prefix’] . ‘term_taxonomy t set count = ( select count(object_id) from ‘ . $import[‘wp_prefix’] . ‘term_relationships where term_taxonomy_id = t.term_taxonomy_id )’);

// comments

$total_comments = DB::get_value ( ‘select count() from {comments}’ );

echo ‘Total comments: ‘ . $total_comments . "n";

// get the comment types from habari
$comment_types = Comment::list_comment_types();
$comment_statuses = Comment::list_comment_statuses();

for ( $i = 0; $i < $total_comments / 10; $i++ ) {

// get the comments
$comments = DB::get_results( ‘select post_id, name, email, url, ip, date, content, status, type from {comments} order by id limit 10 offset ‘ . $i  10 );

echo ‘Got ‘ . count( $comments ) . ‘ comments’ . "n";

foreach ( $comments as $comment ) {

$comment->date = HabariDateTime::date_create( $comment->date );

$comment_status = $comment_statuses[ $comment->status ];
$comment_type = $comment_types[ $comment->type ];

if ( $comment_status == ‘approved’ ) {
$comment_approved = true;
}
else {
$comment_approved = false;
}

$insert_query = ‘insert into ‘ . $import[‘wp_prefix’] . ‘comments (
comment_post_id,
comment_author,
comment_author_email,
comment_author_url,
comment_author_ip,
comment_date,
comment_date_gmt,
comment_content,
comment_approved,
comment_type
) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )’;

$insert_params = array(
$wp_posts[ $comment->post_id ],
$comment->name,
$comment->email,
$comment->url,
long2ip( $comment->ip ),
$comment->date->format( ‘Y-m-d H-i-s’ ),
gmdate( ‘Y-m-d H-i-s’, $comment->date->int ),
$comment->content,
$comment_approved,
$comment_type
);

$wpdb->query( $insert_query, $insert_params );

}

}

// update comment user_id links based on user display names
$wpdb->query( ‘update ‘ . $import[‘wp_prefix’] . ‘comments c set user_id = ( select ID from ‘ . $import[‘wp_prefix’] . ‘users where display_name = c.comment_author ) where comment_author in ( select distinct display_name from ‘ . $import[‘wp_prefix’] . ‘users )’);

// update post comment counts
$wpdb->query( ‘update ‘ . $import[‘wp_prefix’] . ‘posts p set comment_count = ( select count() from ‘ . $import[‘wp_prefix’] . ‘comments where comment_post_ID = p.ID and comment_approved = ‘1’ )’ );

echo ‘</pre>’;

?>