高级自定义字段 - 设置另一个帖子的帖子对象

时间:2017-06-14 14:33:46

标签: php wordpress advanced-custom-fields

我现在已经尝试解决这个问题几天了。我希望有人可以帮助我!

基本上,我尝试做的是:

  1. 创建帖子(优惠)
  2. 创建另一篇文章(评论)
  3. 创建评论时
  4. 将要约的对象关系更新为审核
  5. 我目前的代码是:

    add_action( 'transition_post_status', 'create_review', 10, 3 );
    function create_review( $new, $old, $post ) {
    
        if ( ( $new == 'publish' ) && ( $old == 'draft' ) && ( $post->post_type == 'ebs_offer' ) ) {
    
            //when new offer is created
            //create a review post
            $review_post = array(
            'post_type' => 'ebs_review',
            'post_title'    => get_field('ebs_brand_name', $post->ID),
            'post_content'  => 'Content Goes Here',
            'post_status'   => 'publish',
            'post_author'   => 1,
            );
    
            // Insert the post into the database
            wp_insert_post( $review_post );
    
    
        } else {
            return;
        }
    
            if ( ( $new == 'publish' ) && ( $old == 'draft' ) && ( $post->post_type == 'ebs_review' ) ) {
    
            //when new review is created
            //update the offer post object relationship
    
    
        } else {
            return;
        }
    
    
    }
    

    这很好用,我只是无法弄清楚如何更新优惠的帖子对象关系。在任何人说我的代码没有表明我自己试图解决这个问题之前,我已经尝试了大量不同的钩子和功能 - 我有!

    我已经删除了我的代码,以便有人可以指出我正确的方向。

    谢谢你们!

1 个答案:

答案 0 :(得分:0)

解决!

对于有相同问题的任何人,您可以使用:

update_field($ field_name,$ post,$ post-you-to-update-id);

更新。

传递整个$ post数组以更新post对象。

希望这有助于某人。

add_action( 'transition_post_status', 'create_review', 10, 3 );
function create_review( $new, $old, $post ) {

    if ( ( $new == 'publish' ) && ( $old == 'draft' ) && ( $post->post_type == 'ebs_offer' ) ) {

        //when new offer is created
        //create a review post

        global $offer_post_id;
        $offer_post_id = $post->ID;

        // Create post object
        $review_post = array(
        'post_type' => 'ebs_review',
        'post_title'    => get_field('ebs_brand_name', $post->ID),
        'post_content'  => 'Content Goes Here',
        'post_status'   => 'publish',
        'post_author'   => 1,
        );

        // Insert the post into the database
        wp_insert_post( $review_post );


    } 

    if ( ( $new == 'publish' ) && ( $old == 'new' ) && ( $post->post_type == 'ebs_review' ) ) {

        //when new offer is created
        //link the review page to the offer
        global $offer_post_id;
        update_field('ebs_review_link', $post, $offer_post_id);

    } else {
        return;
    }


}