Claudio Simeone による最近の記事では、投稿に列を追加する方法、投稿タイプや管理画面をカスタマイズする (または既存のものを削除する) 方法を紹介しました。この簡単なヒントでは、これを基にして、新しく作成した列を並べ替え可能にする方法を説明します。
どの列を並べ替え可能として登録するかを WordPress に伝えるには、次のフィルターが必要です:
リーリー投稿とページの場合、$screen->id
はそれぞれ「edit-post」と「edit-page」です。一般的に、「my-post-type」という名前の投稿タイプの場合、「edit-my-post-type」となります。
フィルターには、並べ替え可能な列の名前をキーとして、並べ替え基準を値として持つ配列が渡されます。より正確には、これらの値は、テーブルにデータを設定するクエリに「orderby
」パラメータが設定されていることを示します。列を削除するのと同じ方法で、この配列から列を削除して列を「並べ替え不可」にすることもできます。例を見てみましょう:
Claudio の記事によれば、「Cake」投稿タイプに「Slice」列を追加したと仮定すると、次のことができます。
リーリーこの列に次の内容を追加しました:
リーリースライスをメタデータとして保存しましたが、列には他のデータを入力できます。
次に、カスタム列を「並べ替え可能」として登録します。上で述べたように、manage_{$screen->id}_sortable_column
フィルターを使用します。この例の $screen->id
は「edit-cake」です。
$columns
配列のキーは並べ替え可能な列を表し、その値は WordPress にクエリで 'orderby
' を設定する内容を指示します。値が WordPress 自体によって認識される「orderby
」のいずれかである場合 (これらの値には、「title
」、「date
」、「##」が含まれます) #modified '、'
comment_count'、または WordPress Codex の WP_Query に以下にリストされている他の値) ここで終了します。このルールの例外は (この例に示すように) '
meta_value' パラメーターと '
meta_value_num' パラメーターであり、これらもメタキーを設定する必要があります。
pre_get_posts アクションをフックすることです。これにより、変更可能なクエリ オブジェクトが渡されます。すべてのデフォルトのクエリ (前と後ろ) がこのアクションをトリガーすることに注意してください。問題が発生する可能性は低いですが、WordPress でフロントエンドでも
orderby を「スライス」に設定したい場合を除き、管理者側のクエリにのみ影響を与えることが最善です。
リーリー
meta_value_num」の代わりに「
meta_value」を使用します。
$query は
WP_Query オブジェクトであるため、このオブジェクトを使用してあらゆるものを並べ替えることができ、列を並べ替えることもできます。その他のより複雑な処理については、
posts_orderby (または
post_clauses) フックをフックする必要がありますが、それはこの簡単なヒントの範囲を超えています。
注: 投稿にそのメタ キーの値が保存されていない場合、そのメタ キーで並べ替えても投稿は表示されません。これは、メタ値として 0 を保存する投稿とは異なります。
以上がクイック ヒント: 並べ替え可能なカスタム列を有効にするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。