自定义帖子类型:将POST_TITLE设置为自定义帖子类型字段

时间:2011-07-05 作者:Mestika

我为一家公司的员工创建了一个自定义帖子类型,其中包含一些他们必须填写的字段(如电子邮件、电话等)和一个选择框,该框从另一个名为“公司”的自定义帖子类型中获取一些值。我已经禁用/删除了员工职位类型的编辑器,但现在我很难在概述中列出它们,因为每个“员工”都缺少一个标题(post\\u title)。如何将员工的post\\u title设置为与自定义字段“Name”相等?

有很多代码在工作,所以我只显示我为每个员工保存数据的部分:

foreach ($meta_box[\'fields\'] as $field) {
    if(isset($_POST[$field[\'id\']])) {
        if(!add_post_meta($post_id, $field[\'id\'], $_POST[$field[\'id\']], true)) update_post_meta($post_id, $field[\'id\'], $_POST[$field[\'id\']]);
    }

}
我有一个包含所有数据的数组,然后用每个字段的正确值保存,但我可以在这里说:

If($field[‘id’] == ‘emp_name’) {
    Set($post_title = $field[‘id’]); 
}
或者类似的?

如有任何帮助或建议,将不胜感激。

谢谢-梅斯蒂卡

1 个回复
SO网友:Chip Bennett

我会简单地过滤the_title 以便为自定义帖子类型输出适当的自定义字段数据:

<?php
function theme_slug_filter_the_title( $title ) {
    global $post;
    if ( \'employee\' == get_post_type( $post ) ) {
        $custom = ( get_post_custom( $post->ID ) ? get_post_custom( $post->ID ) : false );
        $custom_title = ( isset( $custom[\'name\'][0] ) ? $custom[\'name\'][0] : \'(Name Not Entered)\' );
        return $custom_title;
    } else {
        return $title;
    }
}
add_filter( \'the_title\', \'theme_slug_filter_the_title\' );
?>
这将用自定义帖子类型的自定义字段“name”的值替换帖子标题。如果未输入“名称”,则返回“(未输入名称)”。

(当然,您需要替换get_post_type()$custom[\'name\'], 视情况而定。)

结束

相关推荐