[wp-trac] [WordPress Trac] #55129: WP REST API - Updating "status" field on a "post" from "future" to "publish" does not work

WordPress Trac noreply at wordpress.org
Wed Feb 9 23:11:26 UTC 2022


#55129: WP REST API - Updating "status" field on a "post" from "future" to
"publish" does not work
--------------------------+------------------------------
 Reporter:  mcmwebsol     |       Owner:  (none)
     Type:  defect (bug)  |      Status:  new
 Priority:  normal        |   Milestone:  Awaiting Review
Component:  REST API      |     Version:  5.9
 Severity:  normal        |  Resolution:
 Keywords:                |     Focuses:
--------------------------+------------------------------

Comment (by mcmwebsol):

 Replying to [comment:1 rafiahmedd]:
 > I just check the issue and I can see it's working perfectly fine with
 > {{{
 > Content-Type: multipart/form-data
 > }}}
 >
 I tried it now with Content-Type: multipart/form-data using the below PHP
 code (sensitive information scrubbed) and it still does not update the
 status to "publish"

 $siteURL = 'https://subdomain.wpengine.com';
 $url = $siteURL.'/wp-json/wp/v2/posts/3302';
 $data = array(
   'status'  => 'publish'
 );
 $username = 'user';
 $password = 'pass'
 posty($url, $data, $username, $password);

 function posty($url, $data, $username, $password) {

     $ch = curl_init($url);

     $headers = [
         'Cache-Control: no-cache',
         'Content-Type: multipart/form-data',
         'Accept: application/json'
     ];

     curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
     curl_setopt($ch, CURLOPT_USERPWD, "$username:$password" );
     curl_setopt($ch, CURLOPT_HEADER, 0); // set to 0 to eliminate header
 info from response
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Returns response data
 instead of TRUE(1)
     curl_setopt($ch, CURLOPT_TIMEOUT, 10);
     curl_setopt($ch, CURLOPT_POST, 1);
     curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); // use HTTP
 POST to send form data
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // for now..
     curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
     $resp = curl_exec($ch); //execute post and get results

     print " resp=$resp// ";

     $jsonResponse = json_decode($resp, TRUE);

     $newID = FALSE;

     if ( isset($jsonResponse['id']) ) {
       $newID = $jsonResponse['id'];
     }
     else {
       echo '<div class="mcm-errors">An error occurred.  Error Code:
 '.htmlentities($jsonResponse['code']).
             ' Error Message: '.htmlentities($jsonResponse['message']).'
 </div>';
       //var_dump($resp);
     }

     return $newID;

 }

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/55129#comment:2>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list