ホームページ  >  記事  >  バックエンド開発  >  クイック ヒント: 並べ替え可能なカスタム列を有効にする

クイック ヒント: 並べ替え可能なカスタム列を有効にする

WBOY
WBOYオリジナル
2023-09-01 17:45:13569ブラウズ

クイック ヒント: 並べ替え可能なカスタム列を有効にする

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' パラメーターであり、これらもメタキーを設定する必要があります。

メタ値、または WordPress が自動的に理解できない他の手段で並べ替えたい場合は、「スライス」による並べ替えの意味を WordPress に伝える必要があります。投稿メタ経由で注文する場合、最も簡単な方法は、

pre_get_posts アクションをフックすることです。これにより、変更可能なクエリ オブジェクトが渡されます。すべてのデフォルトのクエリ (前と後ろ) がこのアクションをトリガーすることに注意してください。問題が発生する可能性は低いですが、WordPress でフロントエンドでも orderby を「スライス」に設定したい場合を除き、管理者側のクエリにのみ影響を与えることが最善です。 リーリー

これは、クエリが「スライス」で並べ替えられているかどうかをチェックし、そうであれば、WordPress に「スライス」投稿メタの値で数値的に並べ替えるよう指示します。値をアルファベット順に並べ替える場合は、「

meta_value_num」の代わりに「meta_value」を使用します。

$queryWP_Query オブジェクトであるため、このオブジェクトを使用してあらゆるものを並べ替えることができ、列を並べ替えることもできます。その他のより複雑な処理については、posts_orderby (または post_clauses) フックをフックする必要がありますが、それはこの簡単なヒントの範囲を超えています。

注: 投稿にそのメタ キーの値が保存されていない場合、そのメタ キーで並べ替えても投稿は表示されません。これは、メタ値として 0 を保存する投稿とは異なります。

以上がクイック ヒント: 並べ替え可能なカスタム列を有効にするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。