シングルインストールのWordPressをマルチサイトの子サイトとしてインポート/マイグレーションする。

WordPress のシングルインストール(普通にインストールしてあったサイト)のコンテンツから何からをまとめてマルチサイトの子サイトとしてマイグレーションする方法。

普通のWordPressの移行の方法とほとんど同じで差があるところは、

  1. url が変わる
  2. uploads/ ディレクトリのパスが変わる( uploads/sites/site_id )になる
  3. users と usermeta がマルチサイトの親サイトに統合される

の3点です。

今回は、3点目は手動でなんとかすることにして、1, 2 をぱぱっとやる手順についてまとめます。example.jp というサイトを example.com/ja に移行するとすると以下のようになります。

  1. マルチサイトを用意して、子サイトを作る
  2. 子サイトのIDを把握する。以下、サイトIDは2だったとして進めます
  3. シングル側でDBをダンプする(wp_users, wp_usermeta はしない)
  4. ダンプしたDBに対して、以下の置換を行う
    1. example.jp -> example.com/ja
    2. /wp-content/uploads/ -> /wp-content/uploads/sites/2/
    3. `wp_ -> `wp_2_ (バックティックを含めると事故が少ない)
  5. themes/, plugins/ ディレクトリを移す
  6. uploads ディレクトリを wp-content/uploads/sites/2/ に移す
  7. マルチサイト側にインポートする

これでできます。作業中なので他にも何かあったら更新していきたいと思います。

コマンドで置換する

sed コマンドを使います。

cat ./prod-single-sub.sql \
 | sed -e 's/https:\/\/example.jp/http:\/\/example.com\/ja/g' \
 | sed -e 's/http:\/\/example.jp/http:\/\/example.com\/ja/g' \
 | sed -e 's/example.jp/example.com\/ja/g' \
 | sed -e 's/`wp_/`wp_2_/g' \
 | sed -e 's/\/wp-content\/uploads\//\/wp-content\/uploads\/sites\/2\//g' \
 > ./dev-multi-sub.sql

wp-cli で、特定のテーブルのみをエクスポートする

3の wp_users, wp_usermeta を排除するには、次のようにするとよいです。

wp db export prod-single-sub.sql --tables=wp_commentmeta,wp_comments,wp_links,wp_options,wp_postmeta,wp_posts,wp_term_relationships,wp_term_taxonomy,wp_termmeta,wp_terms

--tablesでどのテーブルを対象にするのかが決められるのですね。

↓ プラグインを作る方々への本、書きました。 ↓

WP REST API の OAuth 認証の方法と何が起こっているのかとなぜそんなことをしているのか

ウェブアプリ、スマホアプリなどの外部のアプリケーションから WP REST API を利用して WordPress のデータを更新などするために必要になる OAuth 認証の方法について。何が起こっているのか、なぜそんなことをしているのかを丁寧に調べてみたレポートです。

OAuth認証やってまいります。

WP REST API の OAuth 認証用のプラグインの github レポジトリのドキュメントのフローの通り進めます。また、リクエストの送信には、Paw という Mac アプリを利用します。

この記事自体の中に上記のドキュメントで伝えられていることを逐次翻訳して残しておこうと思います。上記のドキュメントは読まなくても大丈夫になるように頑張ります。間違いがあったら、 @shinichiN へお願いします。

STEP 0: Client Key と Client Secret を作成する

ドキュメントサイトの方には「OAuth のプラグインにUIはありません。そのうち作ります」などと書かれておりましたが、実際にはありました。

WP REST API の OAuth プラグインのアプリケーション作成画面
WP REST API の OAuth プラグインが提供するアプリケーション作成画面

wp-cli を利用して $ wp oauth1 add みたいなことをしないといけない、とドキュメントサイトにはありますが、管理画面でできました。

というわけでさっそく作っていきましょう。

コンシューマを作ってみました。
コンシューマを作ってみました。

NameDescription は管理用のものだと思われますので適当に入れます。Callback URL はよく分からないですが必須なので /success としました。

Client Key と Client Secret をメモしておきましょう。

OAuth フローの概要と、その意義

OAuth1/Auth-Flow.md at master · WP-API/OAuth1 にある OAuth 認証のフローを翻訳します。クライアント側から見ると、3つのフローに分かれています。

“WP REST API の OAuth 認証の方法と何が起こっているのかとなぜそんなことをしているのか”の続きを読む

↓ プラグインを作る方々への本、書きました。 ↓

習うより慣れろ。WP API にリクエストをいっぱい投げる。& REST クライアント “Paw” が超便利。

WP REST API サイトの主要なページをじっくり読んだところで、次は習うより慣れろということで、リクエストいっぱいしてみて、レスポンスをじっくり見てみよう、という趣向で進めてみたいと思います。

前提として、以下の記事を読んでおくと、話がよく分かると思います。

また作業にあたり、Mさんこと @miya0001 さんから Paw – The ultimate REST client for Mac という、REST クライアントを紹介してもらいましたので使ってみました。

スクリーンショット 2016-01-03 10.34.36

Paw is a full-featured and beautifully designed Mac app that makes interaction with REST services delightful. Whether you are an API maker or consumer, Paw helps you build HTTP requests, inspect the server’s response and even generate client code.

Paw は機能フル装備の美しい Mac 用アプリで、REST サービスとのインタラクションを快適にします。API を開発するひとにとっても、使う人にとっても、HTTP リクエストをビルドしたり、サーバからのレスポンスを詳しく見てみたり、さらにはクライアントコードを生成してみたりするのに便利です。

いやー、実を言いますと httpie はとっても手軽なんですけど長い json がどわーっと来ると目的の key を探したりするのが不便で困っていたんです。手元でパッとテストするにはとてもいいのですが、使い分けですね。

ということで、

  • エンドポイントやリクエスト内容を整理して保存
  • レスポンスを綺麗に見る
  • 自分が何をやっているのか見て分かるようになる

ということのためによさそうです。まずは30日間の Trial ができるということです。

インストールするとこんな感じで、

Paw の初期画面
Paw の初期画面
  • アクションを選び、
  • URL を入れて
  • パラメータを指定する

ための画面が出てきました。とりあえず、

というのをやってみます。

Paw では認証関連もサポートしているようなので、次回以降は以下の作業もやってみます。

  • 認証をしてみる(参考: WP REST API のドキュメントの認証ページの翻訳)
    • まず Basic 認証を
    • 次に OAuth 認証を

“習うより慣れろ。WP API にリクエストをいっぱい投げる。& REST クライアント “Paw” が超便利。”の続きを読む

↓ プラグインを作る方々への本、書きました。 ↓

WP REST API ドキュメント Discovery

Discovery | WP REST API v2 Documentation の翻訳です。

Discovery 発見/探索

未知のサイトにアクセスする際、そのサイトでは何が可能でどのように設定されているのかを知る必要があります。何を知りたいのかによりますが、幾つかのステップで探索することができます。

“WP REST API ドキュメント Discovery”の続きを読む

↓ プラグインを作る方々への本、書きました。 ↓

WP REST API のドキュメントの認証ページの翻訳

前回の用語集の翻訳に続きまして、認証のページも翻訳してみました。以下翻訳。

認証

このAPIにおいては、認証には2つの選択肢があり、基本的に以下のように選びましょう。

  • そのサイトで有効化されたテーマやプラグインから利用する -> クッキー認証
  • デスクトップアプリ、ウェブアプリ、モバイルアプリなどのサイトの外からアクセスするクライアントとして API を利用する -> OAuth 認証

“WP REST API のドキュメントの認証ページの翻訳”の続きを読む

↓ プラグインを作る方々への本、書きました。 ↓