それこそマルチサイト機能で各ユーザーごとのサイトを作成ではだめなのでしょうか?
各ユーザーが書いた記事をメインブログにまとめて表示させたいなら色々工夫する必要がありそうですが。
試用ありがとうございます。
とりあえず機能を実装してみたので、デザインはmy-sites.phpから借用してきただけなのでかなり無理矢理でした。Divタグに変更するなど多少デザイン面の変更と、functions.phpにregister_post_typeで記述されている場合でもカスタム投稿を表示されるように変更しました。
ただし、register_post_typeを解析しているわけではなく、データベースから投稿されているPosttypeを解析しているので投稿が一件もないカスタム投稿は表示されませんし、表示される名前がラベルではなくposttype名になってしまいます。
また、Custom Post Type UIを使用しているが、register_post_typeでもカスタム投稿を追加しているというケースの場合はCustom Post Type UIで作成したカスタム投稿しか取得できないようになっています。
カスタム投稿の作成にはCustom Post Type UIを利用しているのでfunctions.phpを読み込んでも情報を取得できないのです。と書いてふとCustom Post Type UIはどこに情報保存してるんだ?と思い調べてみたところ、wp_optionのcpt_custom_post_typesにカスタム投稿情報が収納されていました。これでCustom Post Type UIがインストールされている場合は情報が取得できるようになりました。ない場合はregister_post_type()の記述から・・・というのも考えましたが、他のプラグインでカスタム投稿を作成してる可能性も考えるといまいちですかねえ?
有効な関数が見つからず、とりあえず
switch_to_blog($blog_id);
global $wpdb;
$sql = "SELECT post_type FROM $wpdb->posts GROUP BY post_type ";
$sql .= "HAVING post_type != 'page' AND post_type != 'post' AND post_type != 'revision' AND post_type != 'attachment'";
$posttype_names = $wpdb->get_results($sql);
restore_current_blog();
で投稿データからpost/page/revision/attachmentを除くpost_typeを取得してみました。
ただ、この方法だと一件もその投稿タイプで投稿がない投稿タイプを取得できませんし、
post/page/revision/attachment 以外でカスタム投稿タイプでもないpost_typeが存在する場合(存在するのか知りませんが)対処できません。
何かいい方法はないでしょうか。