如何在没有支持的情况下设置自定义帖子类型标题

时间:2013-02-27 作者:clockwiseq

因此,我在另一个帖子中提出了不同的问题,但这更像是一个建议类型的问题,因此它实际上没有给出任何有用的回答。我相信我可以说得更好,应该可以帮助你们中的一些人理解我试图实现的目标,并在我们合作解决方案后可能帮助其他人。

我有一个自定义的帖子类型,它使用的支持非常有限(described here) 值,因为我只需要自定义帖子类型的元框值。对于我的类型来说,包含标题和内容是没有意义的。代码如下:

register_post_type( \'athlete\',
        array(
            \'labels\' => array(
                \'name\' => \'Athletes\',
                \'singular_name\' => \'Athlete\',
                \'add_new\' => \'Add New\',
                \'add_new_item\' => \'Add New Athlete\',
                \'edit\' => \'Edit\',
                \'edit_item\' => \'Edit Athlete\',
                \'new_item\' => \'New Athlete\',
                \'view\' => \'View\',
                \'view_item\' => \'View Athlete\',
                \'search_items\' => \'Search Athletes\',
                \'not_found\' => \'No Athletes found\',
                \'not_found_in_trash\' => \'No Athletes found in Trash\',
                \'parent\' => \'Parent Athlete\'
            ),

            \'public\' => true,
            \'menu_position\' => 15,
            \'supports\' => array( \'thumbnail\' ),
            \'taxonomies\' => array( \'\' ),
            \'has_archive\' => true
        )
    );
正如您所看到的,我只需要缩略图支持选项,因为我的帖子类型的其余部分将是元框(不包括在这个问题中)。问题是,当我保存运动员时,我有两个问题,我不知道如何在运动员列表中显示我的元框值(作为网格中的列),我也不知道如何设置标题值,因为它总是将其设置为“自动生成”,这不是首选。如果标题是可搜索的字段,我更愿意将值设置为[名字]+[姓氏]。有谁能帮助解决这两个问题,并解释一下使用自定义post类型而不是使用自定义数据库表和自定义UI来管理对象是否会遇到任何问题?

1 个回复
最合适的回答,由SO网友:Manny Fleurmond 整理而成

我也涉猎过这个。对于元框,我建议Meta Box 插件(我经常为其提供代码)。关于如何使用它的一个很好的教程是here. 对于自定义列,请在WPSE中进行搜索,但this 应该让你开始。保存帖子标题需要使用save_post 滤器设置元框时,请记住用于名字和姓氏的id,然后将其替换为以下代码:

add_filter( \'save_post_athlete\', \'wpse88655_set_title\', 10, 3 );
function wpse88655_set_title ( $post_id, $post, $update ){
    //This temporarily removes filter to prevent infinite loops
    remove_filter( \'save_post_athlete\', __FUNCTION__ );

    //get first and last name meta
    $first = get_metadata( \'athelete_first_name\', $post_id ); //meta for first name
    $last = get_metadata( \'athelete_last_name\', $post_id );   //meta for last name

    $title = $first . \' \' . $last;

    //update title
    wp_update_post( array( \'ID\'=>$post_id, \'post_title\'=>$title ) );

    //redo filter
    add_filter( \'save_post_athlete\', __FUNCTION__, 10, 3 );
}

结束

相关推荐

将Metabox日期月份编号转换为单词

我使用带有日期(日、月和年)的自定义metabox。问题是,当我尝试将日期数字转换为日期字时,例如10是10月。我使用此代码:function eventposttype_get_the_month_abbr($month) { global $wp_locale; for ( $i = 1; $i < 13; $i = $i +1 ) { if ( $i == $month ) $monthabbr = $wp