/** * Publish a post sent to production. * * New posts that are sent to production will have a post status of * 'publish'. Since we don't want the post to go public until all data * has been synced from content stage, post status has been changed to * 'draft'. Post status is now changed back to 'publish'. * * @param Post $post */ public function publish_post(Post $post) { $prod_id = $this->post_dao->get_id_by_guid($post->get_guid()); if (!$prod_id) { $msg = sprintf('No post with GUID %s found on production.', $post->get_guid()); $this->api->add_deploy_message($this->batch->get_id(), $msg, 'error'); return; } /* * Trigger an action before changing the post status to give other plug-ins * a chance to act before the post goes public (e.g. cache warm-up). */ do_action('sme_pre_publish_post', $prod_id, get_current_blog_id()); /* * Publish the new post if post status from staging environment is set to * "publish". */ if ($post->get_post_status() == 'publish') { $this->post_dao->update_post_status($prod_id, 'publish'); } }