我让程序员自动将每个帖子的标题选为所选日期和所选地点(以便用户节省一些时间)。当我点击发布'帖子的标题是日期两次(即03-26-15 03-26-15)。然后发布'按钮变成了“更新”。按钮。然后当我点击更新'标题是正确的(即; 03-26-15伦敦)。我点击“发布”后试图弄清楚如何以这种方式获取它。第一次。程序员消失了,我无法弄清楚。任何帮助都会很棒。
function post_updated($ post_id){
global $post_type;
if ($post_type == 'place') {
if ( !wp_is_post_revision( $post_id ) && !(defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE) ) {
$postTitle.=get_the_date( 'm/d/Y', $post_id );
$postTitle.=" ".get_the_title(get_post_meta($post_id, 'place_locale', true) ) ;
$post['ID'] = $post_id;
$post['post_title'] = $postTitle;
remove_action( 'save_post', 'post_updated' );
wp_update_post($post);
add_action( 'save_post', 'post_updated' );
}
}
}
add_action(' save_post',' post_updated');
答案 0 :(得分:0)
.=
运算符附加,因此您的标题正在重复。
只需将其更改为=
即可。
答案 1 :(得分:0)
您确定这是唯一功能吗?似乎只有“更新后”代码。
使用wp_insert_post
处理帖子创建,例如:
$my_post = array(
'post_title' => $title,
'post_content' => "",
'post_status' => "pending",
'post_author' => wp_get_current_user()->ID
);
$post_id = wp_insert_post( $my_post );
答案 2 :(得分:0)
旧问题,但这可以帮助谁提出这个问题:
代码存在一些问题:
global $post_type
。 =
运算符而不是.=
来定义变量。 get_the_title()
函数仅接受post_id或post对象作为参数。 place
的自定义帖子类型,因此最好使用post type specific hook而不是普通且拥挤的save_post
挂钩。 经过这些修改,最终代码可能是这样的:
function tst_post_updated( $post_id )
{
if ( !wp_is_post_revision( $post_id ) && !(defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE) ) {
$post_title = get_the_date( 'm/d/Y', $post_id );
$post_title .= " " . get_post_meta($post_id, 'place_locale', true);
$post_title = sanitize_title($post_title);
$post['ID'] = $post_id;
$post['post_title'] = $post_title;
remove_action( 'save_post_place', 'tst_post_updated' );
wp_update_post($post);
add_action( 'save_post_place', 'tst_post_updated' );
}
}
add_action( 'save_post_place', 'tst_post_updated' );