Contents
こんにちは。
wordpressでインポート作業をしたことがある人は分かると思いますが、1つのカテゴリが2つ作成されることがあります。
一つは記事が入っているカテゴリ、一つは記事が入ってないカテゴリという感じです。
さらに、インポートするwordpressにエクスポートしたwordpressと同じカテゴリがあっても、そのなかにはインポートしてくれません。
カテゴリ数が少なければ手作業で一つずつ削除していけば済むことですが、カテゴリ数が増えればそれは気の遠くなるような作業。
ということで、調べたらフォーラムで解決策がありましたので、以下自分用まとめです
(以下ほぼコピペですので元記事のフォーラムへこちらからどうぞ)
対策1
このバグに関しては、日本語のカテゴリ名に対してスラッグを変更している場合に起きるようなので、スラッグを変更しない、もしくはエクスポート前にスラッグを変更前の%nn形式に戻してあげる。
対策2
上記のバグ修正のため、
/wp-admin/import/wordpress.php
このファイルをごにょごにょします。
fromからtoへ変更(フォーラムmizube様ポストより以下)
[sourcecode language=”php”]
/*
* line 403-404:
*/
// from:
preg_match_all(‘|<category>(.*?)</category>|is’, $post, $categories);
$categories = $categories[1];
// to:
preg_match_all(‘|<category domain="category" nicename="([0-9a-z%\-_]*?)">(.*?)</category>|is’, $post, $categories);
$nicenames = $categories[1];
$categories = $categories[2];
/*
* Line 462-482
*/
// from:
if (count($categories) > 0) {
$post_cats = array();
foreach ($categories as $category) {
if ( ” == $category )
continue;
$slug = sanitize_term_field(‘slug’, $category, 0, ‘category’, ‘db’);
$cat = get_term_by(‘slug’, $slug, ‘category’);
$cat_ID = 0;
if ( ! empty($cat) )
$cat_ID = $cat->term_id;
if ($cat_ID == 0) {
$category = $wpdb->escape($category);
$cat_ID = wp_insert_category(array(‘cat_name’ => $category));
if ( is_wp_error($cat_ID) )
continue;
}
$post_cats[] = $cat_ID;
}
wp_set_post_categories($post_id, $post_cats);
}
// to:
if ($c = count($categories) > 0) {
$post_cats = array();
for ($i = 0; $i < $c; $i++ ) {
if ( ” == $categories[$i] || ” == $nicenames[$i] )
continue;
$cat = get_term_by(‘slug’, $nicenames[$i], ‘category’);
if ( empty($cat) || $cat->name != $categories[$i] ) {
$slug = sanitize_term_field(‘slug’, $categories[$i], 0, ‘category’, ‘db’);
$cat = get_term_by(‘slug’, $slug, ‘category’);
}
$cat_ID = 0;
if ( ! empty($cat) )
$cat_ID = $cat->term_id;
if ($cat_ID == 0) {
$category = $wpdb->escape($categories[$i]);
$cat_ID = wp_insert_category(array(‘cat_name’ => $category));
if ( is_wp_error($cat_ID) )
continue;
}
$post_cats[] = $cat_ID;
}
wp_set_post_categories($post_id, $post_cats);
}
[/sourcecode]
以上、wordpress2.8.2でも確認済みです。
詳しくはフォーラムをご覧下さい。
- Facebook GraphAPI v2.9でいいね・シェア数をPHPで取得して表示 - 2017年9月7日
- phpstormのFilewatcherでautoprefixerを使う方法 - 2017年1月19日
- Custom Field Templateを使用してのプレビューを実装 - 2016年1月14日
- WordPress:WooCommerceを使ってみて分かったこと - 2013年7月5日
- 誰得なプラグイン Ultimate Google Analytics改をひっそりと公開します - 2013年6月4日
- プラグイン『WooCommerce Fields for Japan』を公開しました - 2013年4月21日
- 公式 WordPress.orgプラグインディレクトリでのプラグイン公開のススメ - 2013年4月17日
- WordPress:WooCommerceを日本仕様へと日本語化 - 2013年4月15日
- webクリエイター パソコンを買う。 - 2013年3月16日
- WordPress:『続きを読む』read moreをpタグで囲む - 2013年3月5日
Pingback: アウトぷっと