我有一个名为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:在管理面板中,如果我点击更新以及"直接发布"自定义帖子,其永久链接和标题采取"正确"形式。
如何在不使用草稿步骤的情况下发布具有自定义标题的新会话?
当自定义帖子"会话&#34>时,可能没有调用过滤器。发表。我怎么强迫它被召唤?
答案 0 :(得分:0)
您可以使用wp_insert_post_data
参数(页面slug)更改post_name
内的固定链接(以下使用sanitize_title
函数从帖子标题生成有效的永久链接):
$data['post_name'] = sanitize_title($data['post_title']);