自定义邮政类型-订单字段

时间:2012-09-18 作者:Force Flow

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

是否有任何内置逻辑可防止“订单”字段中出现重复值?

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

2 个回复
最合适的回答,由SO网友:Dave Hunt 整理而成

使用register\\u post\\u type函数声明自定义帖子类型时,必须将“页面属性”添加到支持字段,如以下示例所示:

register_post_type(\'myposttype\', array(
    \'supports\' => array(\'title\', \'editor\', \'page-attributes\'),
    \'hierarchical\' => false
));
您还需要将任何其他受支持的元框添加到“支持”字段,请参阅https://developer.wordpress.org/reference/functions/register_post_type/ 有关register\\u post\\u type字段的详细信息。

此外,据我所知,没有任何内置方法可以阻止两个相同的顺序,这是因为您可以基于继承权创建子排序(因此一组子页面可以具有不同于另一组的排序)

SO网友:marfarma

除了@DaveHunt的响应之外,您还可以添加一个过滤器,例如下面的过滤器,以定义自定义顺序-在本例中,按标题的字母顺序。(代码感谢Mark Leong\'s blog post.) 删除is_admin() 如果您想在前端自定义order\\u by,请选中。

function set_custom_post_types_admin_order($wp_query) {
  if (is_admin()) {

    // Get the post type from the query
    $post_type = $wp_query->query[\'post_type\'];

    if ( $post_type == \'POST_TYPE\') {

      // \'orderby\' value can be any column name
      $wp_query->set(\'orderby\', \'title\');

      // \'order\' value can be ASC or DESC
      $wp_query->set(\'order\', \'ASC\');
    }
  }
}
add_action(\'pre_get_posts\', \'set_custom_post_types_admin_order\');

Update

有关预保存验证,请参阅以下答案:https://wordpress.stackexchange.com/a/40095/4645讨论您的选择。基本上,它可以归结为自定义jQuery,因为WordPress没有任何预保存挂钩。

此外(复制我之前的评论以供将来参考),下面介绍了如何在管理中公开“菜单顺序”字段,以便用户可以编辑,就像页面一样:Adding 'menu order' column to custom post type admin screen

结束