以编程方式将自定义字段添加到自定义帖子类型中的post_name

时间:2019-02-04 作者:Chris Wathen

我为活动设置了一个简单的自定义帖子类型。我正在使用Carbon字段添加一个开始日期字段,我想将其包含在post\\u名称中。例如:

http://example.com/events/20190401-staff-meeting/

我希望在保存事件时创建post\\u名称,在post\\u名称中添加自定义字段“cw\\u event\\u start\\u date”,以防止URL看起来像这样:

http://example.com/events/staff-meeting/
http://example.com/events/staff-meeting-2/
http://example.com/events/staff-meeting-3/

我们不必担心在同一天发生重复的事件,如果他们这样做了,应该创建post\\u名称为“20180401-staff-meeting-2”。

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

您可以在上筛选段塞创建wp_unique_post_slug

//Register the filter
add_filter(\'wp_unique_post_slug\',\'prefix_the_slug\',10,6);

function prefix_the_slug($slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug){
    //Get value from the custom field
    $prefix = get_post_meta($post_ID,\'cw_event_start_date\',true);

    //Only prefix certain post type and if prefix field existed
    if($post_type===\'post\' && $prefix && !empty($prefix)){

        //Prefix only if it is not already prefixed
        preg_match (\'/^\\d\\d\\d\\d\\d\\d/\', $slug, $matches, PREG_OFFSET_CAPTURE);
        if(empty($matches)){
            return $prefix.\'-\'.$slug;                       
        }
    }
    return $slug;
}

相关推荐