自定义帖子类型-订单字段


14

在自定义帖子类型中,是否可以包含可用于页面的“订单”字段?

是否有任何内置逻辑可防止“ order”字段中的重复值?

这个想法是要能够按照用户指定的顺序对自定义帖子类型进行排序,然后再按字母顺序对基于字符串的自定义字段进行排序。


Answers:


25

使用register_post_type函数声明自定义帖子类型时,您必须在支持字段中添加“ page-attributes”,如以下示例所示:

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

您还需要在'supports'字段中添加所有其他受支持的meta框,有关register_post_type字段的更多信息,请参见http://codex.wordpress.org/Function_Reference/register_post_type

而且据我所知,没有任何内置方法可以防止两个相同的顺序,这是因为您可以基于层次结构创建子顺序(因此一组子页面可以具有与另一组不同的顺序)


using page-attributes表示order字段和parent字段。我如何摆脱这个parent领域?
力流

没关系。设置hierarchical为false摆脱它。
力流

我不好,没意识到你也不想让页面父母。我将更新答案以排除它。
Dave Hunt

你好 我有这段代码,但什么也没看到:```//服务自定义帖子类型add_action('init','create_post_type'); 函数create_post_type(){$ supports_args = array('title','editor','page-attributes'); register_post_type('service',array('labels'=> array('name'=> __('Services'),'singular_name'=> __('Service'),'supports'=> $ supports_args,'hierarchical' => false),'public'=> true,'has_archive'=> true,//'menu_position'=> 2)); }```
塞勒

@Sylar我意识到这已经很晚了,但是在我看来,您的'supports'=> $ supports_args,'hierarchical'=> false在数组的错误部分。在示例中,您将其嵌套在labels数组下,应该在基本数组中,与“ public”的级别相同=> true
Dave Hunt

4

除了@ Dave-Hunt的响应之外,您还可以添加一个过滤器,例如以下内容,以定义自定义顺序-在这种情况下,按标题按字母顺序排列。(代码要感谢Mark Leong的博客文章。is_admin()如果您还希望在前端自定义order_by,请删除该支票。

函数set_custom_post_types_admin_order($ wp_query){
  如果(is_admin()){

    //从查询中获取帖子类型
    $ post_type = $ wp_query-> query ['post_type'];

    如果($ 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 ,其中讨论了您的选项。基本上,它归结为自定义jQuery,因为WordPress没有任何预保存的钩子。

另外(在此复制我之前的评论以供将来参考),这是在管理员中公开“菜单顺序”字段的方法,因此它是用户可编辑的,因为它适用于页面:在自定义帖子类型管理屏幕中添加“菜单顺序”列

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.