我的自定义帖子类型只包含两个(文本)字段:创建自定义帖子类型时使用'supports' => array('title')
的ISBN编号和youtube网址。
问题是,我不需要标题。因此,当我保存我的帖子时,我就这样做,以便标题成为ISBN号。
add_filter('wp_insert_post_data', array($this, 'change_title'), 99, 2);
function change_title($data, $postarr) {
if ($data['post_type'] == 'book_video') {
// If it is our form has not been submitted, so we dont want to do anything
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
return $data;
// Verify this came from the our screen and with proper authorization because save_post can be triggered at other times
if (!isset($_POST['wp_meta_box_nonce']))
return $data;
// Combine address with term
$title = $_POST['_bv_isbn'];
$data['post_title'] = $title;
}
return $data;
}
这样可行,但问题是,当我保存帖子而不预先填写标题(任何内容)时,帖子未保存,标题更改功能未被调用,我的所有字段都被重置。
是否可以为标题设置默认值并隐藏它?
答案 0 :(得分:1)
当您注册自定义帖子类型时,您可以设置它支持的内容,包括标题。
当您致电register_post_type()
时,请向名为$args
的{{1}}添加另一个条目,并将其值设置为数组。然后,您可以传递要支持的帖子类型的元素列表。默认为“标题”和“编辑器”,但有许多选项可供选择。
例如:
supports
只要错过<?php
register_post_type(
"myCustomPostType",
array(
'supports' : array(
'editor',
'author',
'custom-fields'
)
)
)
?>
,您就不必为每个帖子定义一个。
有关详细信息,请访问此页面:http://codex.wordpress.org/Function_Reference/register_post_type#Arguments