【发布时间】:2016-08-10 09:18:50
【问题描述】:
我有一个名为session 的自定义帖子,其中有一些自定义字段,例如date 和event_location。
我想为这个自定义帖子生成一个标题,代码如下:
add_filter( 'wp_insert_post_data' , 'modify_post_title' , '99', 2 );
function modify_post_title( $data , $postarr )
{
if($data['post_type'] == 'session') {
//the id of the post
$post_id = $postarr['ID'];
//the date
$date = get_post_meta( $post_id, 'session_date', true );
//the location
$event_location = get_post_meta( $post_id, 'session_location', true );
//concatenating location and date
$data['post_title'] = "$event_location-$date";
}
//returning the data
return $data;
}
为了使它工作,即为了有一个正确的“伪造”标题用作永久链接(例如 www.mysite.com/session/toronto-04282016),这是我必须做的:
- 创建一个新会话并填写所需的自定义字段
- 将其另存为草稿
- 重新加载编辑会话的页面
- 发布会话帖子
如果我尝试直接发布自定义帖子,其永久链接将采用帖子的#id,例如:www.mysite.com/session/432。
编辑:自定义帖子标题为空
编辑#2:在管理面板中,如果我点击“直接发布”自定义帖子的更新,其永久链接和标题采用“正确”形式。
如何才能在不使用草稿步骤的情况下发布具有自定义标题的新会话?
发布自定义帖子“会话”时,可能未调用过滤器。如何强制调用它?
【问题讨论】:
标签: wordpress custom-post-type