web-dev-qa-db-ja.com

カスタム投稿タイプ - 注文フィールド

カスタム投稿タイプで、ページに利用可能な "order"フィールドを含める方法はありますか?

"order"フィールドに重複する値を防ぐための組み込みロジックはありますか?

アイデアは、カスタム投稿タイプをユーザー指定の順序でソートし、次に文字列ベースのカスタムフィールドでアルファベット順にソートできるようにすることです。

11
Force Flow

Register_post_type関数を使用してカスタム投稿タイプを宣言するときは、次の例のように、サポートフィールドに 'page-attributes'を追加する必要があります。

register_post_type('myposttype', array(
    'supports' => array('title', 'editor', 'page-attributes'),
    'hierarchical' => false
));

Register_post_typeフィールドの詳細については、サポートされている他のメタボックスを「supports」フィールドに追加する必要があります。 http://codex.wordpress.org/Function_Reference/register_post_type を参照してください。

また、同じ順序の2つを防ぐ方法が組み込まれていないことを私の知る限りでは、これは階層に基づいてサブ順序を作成できるためです(したがって、子ページの1つのグループは別の順序と異なる順序を持つことができます)。

23
Dave Hunt

@ Dave-Huntの応答に加えて、次のようなカスタムオーダーを定義するためのフィルタ(この場合はタイトルのアルファベット順)を追加することもできます。 (/おかげで Mark Leongさんのブログ投稿へのコード。 )フロントエンドでもorder_byをカスタマイズしたい場合はis_admin()チェックを外してください。

関数set_custom_post_types_admin_order($ wp_query){
 if(is_admin()){
 
 //クエリから投稿の種類を取得する
 $ post_type = $ wp_query-> query ['post_type']; 
 
 if($ post_type == 'POST_TYPE'){
 
 // 'orderby'の値任意の列名
 $ wp_query-> set( 'orderby'、 'title'); 
 
 // 'order'の値はASCまたはDESC 
にできます。 $ wp_query-> set( 'order'、 'ASC'); 
} 
} 
} 
 add_action( 'pre_get_posts'、 'set_custom_post_types_admin_order'); [] ]

更新

保存前の検証については、次の回答を参照してください。 https://wordpress.stackexchange.com/a/40095/4645 ここで、オプションについて説明します。 WordPressには保存前のフックがないため、基本的にはカスタムjQueryになります。

また、(将来の参考のためにここに私の以前のコメントを複製する)、ここにadminの 'menu order'フィールドを公開する方法があるので、ページの場合と同様にユーザー編集可能です: カスタム投稿タイプへの 'menu order'列の追加管理画面

3
marfarma