WordPressで会員制サイトを作る際にユーザーの登録・削除・ユーザープロフィールの表示/編集などができるようになるプラグイン「Ultimate Member」
1つのプラグインですごく高機能、いろいろなサードパーティプラグイン(作者が作っている訳ではなく第三者がこのプラグインの追加機能として提供しているもの)があるところから掲示板機能の定番ともいえる「bbpress」や、カスタムフィールドを使いやすくする「Advanced Custom Fields」と同様、使えるプラグインであることが分かります。
フロントエンドから投稿してもらった質問に対して、コメント機能を使って回答などのやりとりをしていくという仕組みにする中で、カスタム投稿タイプを使ってフォーラム部分を作る予定で作業を進めていると、「Ultimate Member」のプロフィール画面で表示できる、そのユーザーが投稿した記事(この場合は質問)の一覧にはカスタム投稿タイプが反映されないという事態が発生。
対応できる方法がありましたので紹介しておきます
「Ultimate Member」プラグインでカスタム投稿タイプを使うには
通常だとプログラム中で表示する記事の一覧を絞り込んでテンプレートへ吐き出して表示というのが大抵のプラグインで行う動作なので、たくさんあるソースをいろいろと見てみたものの、それに該当するクエリーが見つかりませんでした。
よく調べるとこのプラグインで表示するプロフィール画面は通常の画面にCSSやdiv要素を使って表現するのではなく、独自のテンプレートを使用していることが分かりました。そしてその中にクエリーがあることが発覚、これで解決です。
編集するテンプレートはプラグインフォルダの中の「ultimate-member」→「templates」→「profile」と開いた中の「posts.php」に書かれていて、管理画面からは触れなかったのでFTPを使ってダウンロード。
そしてファイルを開くと最初の行に
<?php $query_posts = $ultimatemember->query->make('post&posts_per_page=10&offset=0&author=' . um_user('ID') ); ?>
という記述があり、ここで投稿タイプを指定していることが分かりました。
指定しているのは
make(‘post&posts_per_page=10&offset=0&author=’ . um_user(‘ID’) );
という部分。
赤字で書いた「post(投稿の意味)」をカスタム投稿タイプのスラグ名に変更して保存した後、元の場所へ上書きすることでカスタム投稿タイプからのみ記事の一覧(このサイトの場合は質問の一覧)が表示されるようになりました。
念のため元のファイルはサーバー上で「posts-xx.php」のようにリネームして、いつでも元の状態に戻しておくことをお勧めします。
この方法はいろいろと検索して海外の方が解説しておられました
参考:How to change the post type on Ultimate Member posts tab