我使用第三方插件,分两步从前端创建自定义帖子(广告):1) 添加内容后,作者必须按下“预览”按钮2) 只有在那之后,他/她才能保住职位。第一步后,帖子以挂起状态保存,第二步后,帖子变成“发布”。
This is what I want: 在这两个步骤之间转换/保存meta_key
值作为post标记。经过一些研究,我来到了下一个部分工作的功能:
add_action(\'save_post\', \'set_advert_tags\');
function set_advert_tags( $post_id ) {
if ( \'advert\' == get_post_type() ) {
$tags = get_post_meta( $post_id, \'advert_tags_field\', true );
$tags = explode( \',\', $tags );
if(!empty( $tags ))
wp_set_object_terms( $post_id, $tags, \'advert_tag\' );
}
}
What is wrong: 该函数既不会在第一步之后创建标签,也不会在第二步之后创建标签,但当我从后端更新帖子时,它会起作用。这里我还有另一个问题:我无法从后端向帖子添加或分配新标签,因为我的函数以某种方式干扰了这个操作,只有
meta_key
值被指定为post标记。
SO网友:Iurie
彼得·古森的answer 救了我的命:
add_action( \'transition_post_status\', function ( $new_status, $old_status, $post ) {
if( \'publish\' == $new_status && \'advert_tmp\' == $old_status && $post->post_type == \'advert\' ) {
$tags = get_post_meta( $post->ID, \'advert_tags_field\', true );
$tags = explode( \',\', $tags );
if( !empty( $tags ) ) {
wp_set_object_terms( $post->ID, $tags, \'advert_tag\' );
delete_post_meta( $post->ID, \'advert_tags_field\' );
}
}
}, 10, 3 );