WP All Importでインポート時に特定の投稿タイプのみ選択できるようにする方法
前田 大地
記事などをインポート&エクスポートするためのWordPressプラグイン「WP All Import(Import any XML or CSV File to WordPress)」で、インポート時に特定の投稿タイプのみ選択できるようにする方法を紹介します。
やり方
// 選択項目をひとつだけ表示する function ss_wpai_custom_types( $custom_types ) { $custom_types = get_post_types( array( 'name' => 'xxxx' ), 'objects' ); return $custom_types; } add_filter( 'pmxi_custom_types', 'ss_wpai_custom_types', 10, 1 );
functions.phpに上記のコードを記述します。
get_post_typesのところの「xxxx」を、お好きな投稿タイプ名(投稿ならpost、固定ページならpageなど)に変えてください。
複数指定したい場合
// 選択項目を複数表示する function ss_wpai_custom_types( $custom_types ) { $custom_types = array_merge( get_post_types( array( 'name' => 'post' ), 'objects' ), get_post_types( array( 'name' => 'page' ), 'objects' ) ); return $custom_types; } add_filter( 'pmxi_custom_types', 'ss_wpai_custom_types', 10, 1 );
複数の投稿タイプを指定したい場合、$custom_typesに複数の投稿タイプobjectを入れます。array_mergeでガッチャンコさせたらいけました。
pmxi_custom_typesフックについて
pmxi_custom_typesは、インポートのステップ1に出てくる投稿タイプのドロップダウンリストを変更するためのフックです。$custom_typesには、ドロップダウンリストに表示する投稿タイプのobjectが入っています。
公式ドキュメント
https://www.wpallimport.com/documentation/action-reference/#pmxi_custom_types
本来は、show_uiがfalseになっていてそのままだと表示されないカスタム投稿を手動で追加するためのフックぽいですね。
https://github.com/soflyy/wp-all-import-action-reference/issues/63
所感
インポートは、最悪、サイトが大変なことになる恐ろしいものです。もちろん、WP All Importはインポートの手順がそれなりにあり、間違える前に気付けるようにはなっています。ですが、クライアント側でインポートするような運用になってくると、常に不安がつきまといます。特定の投稿タイプでしか使わないのなら、それ以外はインポートできないようにしてしまえばいい。……というのが今回の出発点でした。WP All Importはそこそこ人気のプラグインですが、日本語の情報がほとんどないのでやり方を探すのも一苦労です。ちなみにエクスポート時のための同様のフックはありませんでした。まあ、エクスポートは、サイトがぶっ壊れることもないからいいか。