WordPress→WordPress カテゴリ階層付き記事のエクスポート&インポート方法メモ

WordPress→WordPressへのエクスポート&インポートでうまくいった方法についてのメモ。

前にもメモった通り、カテゴリーとタグのエクスポート&インポートやslugの置き換えなどはWP Import Export Liteというプラグインを使うといい。

ただしカテゴリーの階層を保ったまま記事をエクスポート&インポートするにはWP Import Export Liteでは上手くいかず、All-in-One WP Migrationも途中で止まってしまった。自分の設定が悪いんだろうが、唯一WP All Exportが上手くいったので、その方法についてのメモ。

エクスポート元の操作

管理画面左側の「すべてエクスポート」から「新規エクスポート」を選んで開く。

エクスポートするのものを選択:特定の投稿タイプ
投稿タイプを選択:投稿

「エクスポートファイルをカスタマイズします」を選択

右側の「利用可能なデータ」から「分類」→「カテゴリー」「タグ」を選んで左にドロップする。「ID」「Title」「Content」は元々選択されているが、必要に応じて「Date」「Permalink」「Slug」「Image URL」「Image Path」なども選択。

Export Typeを選択して「続行」を押す(自分はそのまま)。

次のページで「Save & Run Export」を押してエクスポート完了。

インポート先の操作

管理画面左側の「すべてインポート」から「新規インポート」を選んで開く。

「ファイルをアップロード」などを選びインポートする。

「新しいアイテム」「既存のアイテム」を選択する項目が出る。必要な項目を選び、「ステップ2に進みます」を選択。

「○○○行インポートされます それを選択するか、フィルタリングオプションを追加するには、スクロールダウンします」という表示が出て、インポートする項目のプレビューが表示される。特に何も設定しないと、カテゴリーは「undefined5」、タグは「undefined6」に割り当てられる。

「ステップ3に進みます」というボタンを押す。

「ステップ3 Drag & Drop」のページ。必要に応じて左の項目を開いて設定。「タクソノミー、カテゴリー、タグ」はそのままの状態でチェック入ってた。

「ステップ4に進みます」というボタンを押す。

「ステップ4 インポート設定」のページ。既存の投稿をファイル内の変更されたデータで更新するかどうかなど尋ねられる。特にいじらず「続行」ボタンを押す。

「ステップ5 Confirm & Run」最後の確認のページ。問題なければ「インポートの確認&実行」ボタンを押す。これで操作完了。

WordPress マルチサイトで小サイトの画像をメインサイトと同じフォルダに保存する

WordPressをマルチサイト化して小サイトの画像保存先をメインサイトと同じフォルダにする場合、下記のサイトに従ってfunctions.phpに以下のように書き込むのが自分的には一番良かった。従来のサイトでは「http(s)://ドメイン名/wp-admin/options.php」を開いて「upload_path」と「upload_url_path」を編集してたけど、そこをいじる必要もなかった。

/*** 画像をメインサイトと同じフォルダに保存する*/
add_filter(
‘upload_dir’,
function ($dirs) {
if ( is_multisite() ) {
$dirs[‘baseurl’] = network_site_url(‘/img’);
$dirs[‘basedir’] = ABSPATH . ‘img’;
$dirs[‘path’] = $dirs[‘basedir’] . $dirs[‘subdir’];
$dirs[‘url’] = $dirs[‘baseurl’] . $dirs[‘subdir’];
}

return $dirs;
},
999
);

【WP】マルチサイトのメディアファイルの保存場所を統一する方法

マルチサイトの場合、メディアファイルの保存場所は、サイトURL/wp-content/uploads/sites/サイトID/年/月/image.jpg がデフォルトです。 当サイトの場合、https://novel.onl/word/wp-content/uploads/site/5/2023/01/image.jpg のようなURLになります。 /site/5/ のような長い記述が気になる方は、functions.php に次のコードを記入すると、子サイトのメディアファイルは全て、メインサイトと同じフォルダに保存されます。…

WordPress カテゴリーとタグのエクスポート&インポートはWP Import Export Liteというプラグインを使うといい

WordPressを移行するのに何かのツールを使って(何だったか忘れてしまった)投稿ページをエクスポート&インポートしたが、カテゴリーとタグのslugがすべて日本語になってしまっていた(元はすべて英数字に設定していた)。All-in-One WP Migrationというプラグインはマルチサイトだと使えないし、WP All Exportというプラグインは「タクソノミーの移行は有料版買え」と言われるし、なんか簡単に移行できる無料版のプラグイン探すの大変そうだなあ…と思ったが、WP Import Export Liteというプラグインを使うと簡単にできることがわかった。既に存在するカテゴリーやタグを除いて新しいデータだけインポートしたり、既に存在するカテゴリーやタグの内容を新しいデータで書き換えたり、色々選択できる。助かった。

WordPress マルチサイト化に関するメモ

WordPress、サブディレクトリ型のマルチサイト化に挑戦してみた。ネットで検索するとたくさん出てくる標準的な手順に従ってやってみたが、いくつかつまづいた点があった。

参考:WordPressでマルチサイトを作る際と、リダイレクトループが起きた時の覚書 _ WP Kyoto

まずサブディレクトリ型とサブドメイン型を選択する画面が出てこず、勝手にサブドメイン型にされてしまって困ったが、これはwp-config.phpに書き込む「define(‘SUBDOMAIN_INSTALL’, true);」falseにすることで難なく解決した。

/* マルチサイト有効化 */
define(‘WP_ALLOW_MULTISITE’, true);
define(‘MULTISITE’, true);
define(‘SUBDOMAIN_INSTALL’, false); ➔サブドメイン型にする場合はtrueにする
define(‘DOMAIN_CURRENT_SITE’, ‘oo.ebb.jp’);
define(‘PATH_CURRENT_SITE’, ‘/’);
define(‘SITE_ID_CURRENT_SITE’, 1);
define(‘BLOG_ID_CURRENT_SITE’, 1);

あと作った子サイトの管理画面に入ろうとするとリダイレクトループが起きて何も表示されずログインできない件、これは.htaccessの書き方が悪かった。「サイトネットワークを有効化中」のところで表示されるコードを追記するのでなく、すべて上書きすることで解決した。

元の.htaccessのコード

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

↓書き換えた.htaccessのコード

<IfModule mod_rewrite.c>
# マルチサイト有効化
RewriteEngine On
RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ – [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ – [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
</IfModule>


あと子サイトのダッシュボードは表示されるのに、肝心のサイトが403 Forbiddenになって何も表示されない件、これは同じ名前のディレクトリを先に作っていたことが原因だった。当該フォルダを削除して解決。