Question

i found nothing about it in the WP reference and Google, so i ask you: I want to update a post by a form - and with it its children.

      $post = array(

            'ID'             => $mainid,  
            'post_status'   =>   'wartend'
        );
        $lead = wp_update_post($post);



$children = get_children( $mainid );

foreach ($children as $child){
    wp_update_post(
    array(
        'ID' => $child, 
        'post_status'   =>   'wartend',
        'post_parent' => $mainid
    )
);
}

The post is getting updated, but not the children.

Was it helpful?

Solution

get_children returns an array of post objects by default:

https://developer.wordpress.org/reference/functions/get_children/

So you would have to use 'ID' => $child->ID, in this case... also my want to wrap the foreach with if (count($children) > 0) {} to prevent possible errors where there are no children. ie:

$children = get_children( $mainid );

if (count($children) > 0) {
    foreach ($children as $child){
        wp_update_post(
            array(
                'ID' => $child->ID, 
                'post_status'   =>   'wartend',
                'post_parent' => $mainid
                )
            );
        }
    }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with wordpress.stackexchange
scroll top