如何在仍然插入的情况下获取一些帖子元数据?

时间:2014-01-24 12:36:15

标签: php wordpress custom-post-type

我正在尝试创建一个函数,其中某个帖子类型的子帖子继承了与其父级相同的标题和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来实现我想要的目标?

由于

1 个答案:

答案 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。