WordPress管理画面の一覧でカラムを表示させたい

Typesのカスタム投稿設定で「階層」にチェックがついていた WordPress

管理画面で、投稿や固定ページ、カスタム投稿の一覧には、タイトルや投稿者などの項目が並んでいますが、そこにカスタムフィールドを表示させたい場合があります。

今回、ちょっと手こずったところもあったので、それも合せてまとめ。

管理画面の一覧でカラムを表示

まず、管理画面の一覧でカラムを表示させたい場合、
固定ページでは、manage_pages_columns
投稿では、manage_posts_columns
カスタム投稿では、manage_posts_columns、または、manage_${post_type}_posts_columns
を使います。

以下、itemsというカスタム投稿と、item_idというカスタムフィールドがすでにあるとして、それを表示させたい場合。function.phpに以下を追加します。

固定ページでは、

投稿では、

とします。

$columns[‘item_id’] のitem_id はカスタムフィールド名と一致していなくてもも構いません。また、カスタム投稿は、投稿の一種なので、manage_posts_columnsを使えば、同じように表示されます。

なので、カスタム投稿では表示させたいくない場合、get_post_type を使って、投稿の場合だけに限定する必要があります。

カスタム投稿だけに限定したければ、同じように、

とすればOKです。
または、manage_${post_type}_posts_columns を使って、以下のようにしてもおなじです。

さらに、カスタム投稿では、日付を表示する必要が無いという場合。次のようにunsetで削除できます。

次の例は、カスタム投稿が items のときには、dateを削除、ついでに投稿でコメントを非表示にしたいとき。

ここまでで、一覧に項目が表示されるようになるはずです。

カスタムフィールドの値を一覧に表示させる

続いて、カスタムフィールドの値を表示させるようにします。

投稿、カスタム投稿では、manage_posts_custom_column を使います。
固定ページでは、manage_pages_custom_column を使います。

次の例では、固定ページ、投稿、カスタム投稿すべてに対応します。

通常、投稿は投稿の日付順、固定ページとカスタム投稿はタイトル順 で並べられて表示されます。
そうではなくて、カスタムフィールドの値順で並べたい場合もあります。そんなときは、pre_get_posts で、is_admin で分岐させて並べ替えます。

表示された一覧を、item_id の順番で表示させたい場合、

[まとめ]管理画面で、カスタム投稿の一覧にカスタムフィールドの値を表示させて、その値順に並べ替える

以上、まとめますと、こんな感じになります。

[トラブル解決]カスタム投稿一覧で、値が表示されない

カスタム投稿一覧に、項目の追加はできたけれど、なぜか値が表示されない、というトラブルに悩まされました。

カスタム投稿やカスタムフィールドを管理するのに、Typesを使っていたのですが、他のプラグインを全部無効にしてみたり、別のカスタム投稿で試したりと苦闘の末、Types自身の、カスタム投稿の設定で、「階層」にチェックをつけていたことが原因のようでした。

Typesのカスタム投稿設定で「階層」にチェックがついていた

これは、カスタム投稿の hierarchical に該当する設定で、投稿そのものに親子関係をもたせられるようにする、というやつです。
仮にTypesを使わずにカスタム投稿をつくって試すと、hierarchical をtrueにしても問題ないので、Types固有の現象かもしれません。

いずれにしても、今回の事案では意味もなくチェックをつけてしまっていたようで、いらなのでチェックを外すと、すんなりと解決しました。

同じように、Types使ってて、カスタム投稿一覧にカスタムフィールドが表示されずに困ったら、設定を疑ってみてください。

それにしても、たったこれだけに、半日を費やしてしまいました。。。
TypesやAdvance Coutom Fields を使うと、カスタム投稿やカスタムフィールドの管理が楽な反面、トラブル発生時に手こずるというアルアルですね。

 

タイトルとURLをコピーしました