我正在尝试创建一个函数,其中某个帖子类型的子帖子继承了与其父级相同的标题和slug。我正在使用WP类型来定义我的帖子类型及其关系。但我遇到以下代码时遇到问题:
function copy_parent_post_title( $post_id ) {
$new_post = get_post($post_id);
if($new_post->post_type == 'carnews-adverts') {
$parent_id = get_post_meta( $post_id, '_wpcf_belongs_carnews_id', true );
$parent_title = get_the_title($parent_id);
$post_slug = sanitize_title_with_dashes($parent_title);
$post_update = array(
'ID' => $post_id,
'post_title' => $parent_title,
'post_name' => $post_slug
);
remove_action( 'wp_insert_post', 'copy_parent_post_title' );
wp_update_post( $post_update );
add_action( 'wp_insert_post', 'copy_parent_post_title' );
}
}
add_action( 'wp_insert_post', 'copy_parent_post_title' );
问题在于这一行:
$parent_id = get_post_meta( $post_id, '_wpcf_belongs_carnews_id', true );
我认为这是因为此时帖子的元数据还没有插入到数据库中?如果是这样,我如何通过插入帖子访问get_post_meta来实现我想要的目标?
由于
答案 0 :(得分:0)
我想要访问WP类型添加的'_wpcf_belongs_carnews_id',你需要查看$ _POST数组。但是,在调用wp_insert_post()之后,WP类型可能会调用add_post_meta()。在这种情况下,如果挂钩到wp_insert_post,则不会出现元数据。
相反,将您的函数挂钩到add_post_meta:
function copy_parent_post_title( $post_id, $meta_key, $meta_value ) {
$new_post = get_post($post_id);
if (($new_post->post_type == 'carnews-adverts') &&
($meta_key == '_wpcf_belongs_carnews_id')) {
$parent_id = $meta_value;
$parent_title = get_the_title($parent_id);
// ... Rest of your function
}
}
add_action( 'add_post_meta', 'copy_parent_post_title', 10, 3 );
这可能是完全错误的,因为我几乎没有使用Wordpress。