thorization' => 'Bearer YOUR_API_TOKEN', ), ), ) ); new WPCOM_JSON_API_Update_Post_v1_1_Endpoint( array( 'description' => 'Restore a post or page from the trash to its previous status.', 'group' => 'posts', 'stat' => 'posts:1:restore', 'min_version' => '1.1', 'max_version' => '1.1', 'method' => 'POST', 'path' => '/sites/%s/posts/%d/restore', 'path_labels' => array( '$site' => '(int|string) Site ID or domain', '$post_ID' => '(int) The post ID', ), 'example_request' => 'https://public-api.wordpress.com/rest/v1.1/sites/82974409/posts/$post_ID/restore/', 'example_request_data' => array( 'headers' => array( 'authorization' => 'Bearer YOUR_API_TOKEN', ), ), ) ); // phpcs:disable PEAR.NamingConventions.ValidClassName.Invalid /** * Update post v1.1 endpoint class. */ class WPCOM_JSON_API_Update_Post_v1_1_Endpoint extends WPCOM_JSON_API_Post_v1_1_Endpoint { /** * WPCOM_JSON_API_Update_Post_v1_1_Endpoint constructor. * * @param array $args Args. */ public function __construct( $args ) { parent::__construct( $args ); if ( $this->api->ends_with( $this->path, '/delete' ) ) { $this->post_object_format['status']['deleted'] = 'The post has been deleted permanently.'; } } /** * Update post API v1.1 callback. * * /sites/%s/posts/new -> $blog_id * /sites/%s/posts/%d -> $blog_id, $post_id * /sites/%s/posts/%d/delete -> $blog_id, $post_id * /sites/%s/posts/%d/restore -> $blog_id, $post_id * * @param string $path API path. * @param int $blog_id Blog ID. * @param int $post_id Post ID. * * @return array|bool|WP_Error */ public function callback( $path = '', $blog_id = 0, $post_id = 0 ) { $blog_id = $this->api->switch_to_blog_and_validate_user( $this->api->get_blog_id( $blog_id ) ); if ( is_wp_error( $blog_id ) ) { return $blog_id; } if ( $this->api->ends_with( $path, '/delete' ) ) { return $this->delete_post( $path, $blog_id, $post_id ); } elseif ( $this->api->ends_with( $path, '/restore' ) ) { return $this->restore_post( $path, $blog_id, $post_id ); } else { return $this->write_post( $path, $blog_id, $post_id ); } } /** * Create or update a post. * * /sites/%s/posts/new -> $blog_id * /sites/%s/posts/%d -> $blog_id, $post_id * * @param string $path API path. * @param int $blog_id Blog ID. * @param int $post_id Post ID. */ public function write_post( $path, $blog_id, $post_id ) { $delete_featured_image = null; $media_results = array(); $post = null; global $wpdb; $new = $this->api->ends_with( $path, '/new' ); $args = $this->query_args(); // unhook publicize, it's hooked again later -- without this, skipping services is impossible. if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) { remove_action( 'save_post', array( $GLOBALS['publicize_ui']->publicize, 'async_publicize_post' ), 100, 2 ); add_action( 'rest_api_inserted_post', array( $GLOBALS['publicize_ui']->publicize, 'async_publicize_post' ) ); if ( $this->should_load_theme_functions( $post_id ) ) { $this->load_theme_functions(); } } if ( $new ) { $input = $this->input( true ); // 'future' is an alias for 'publish' for now if ( 'future' === $input['status'] ) { $input['status'] = 'publish'; } // default to post. if ( empty( $input['type'] ) ) { $input['type'] = 'post'; } if ( 'revision' === $input['type'] ) { if ( ! isset( $input['parent'] ) ) { return new WP_Error( 'invalid_input', 'Invalid request input', 400 ); } $input['status'] = 'inherit'; // force inherit for revision t 2024 Recovery and Growth OR Renewal and Expansion -

2024 Recovery and Growth OR Renewal and Expansion

Most of the “negative news” has been disclosed and aligns favorably with the largest and most well-funded corporations. What does that mean for our clients? Opportunities present themselves at low periods, and we pay attention to sellers and potential deals. During the year’s initial months, the focus has primarily been on conducting market research, determining prices, and engaging in negotiations.

Position for the rebound. There is always opportunity.
What we know already:
  • We benefited from historically low-interest rates, but the emergence of higher interest rates now presents a barrier to entry.
  • Maturing debt borrowers are required to repay the remaining principal balance in full.
  • The office is forever changed. We had an oversupply before COVID.
  • Construction cost inflation and rising costs associated with materials and labor.
  • Inefficiencies in jurisdictions’ entitlement, permit, and development processes deliver projects behind market trends.
  • Rent stabilization vs. projected growth
  • Elevated insurance rates stem from a heightened occurrence of climate-related events.
What we can look for and do:
  • Traditional drop-in interest rates during an election year, the market is projecting a Q3 2024 dip in rates.
  • Properties are already selling well below market rate and returned to the bank. Buyers will be in a stronger position to negotiate down the price in secondary-quality shopping malls and infill redevelopments.
  • Close to transit, office space in urban centers will be refilled first. There will be a slow shift back to the office.
  • Construction costs seem to stabilize, but you still need to be diligent that you’re getting the best pricing.
  • Jurisdictional staffing is low, and schedules can slip if you are not consistently pushing staff to provide reviews promptly.
  • Retail as an asset class is holding up well. Market conditions are favorable, with cap rates and financing costs where they are.
  • We undertake an insurance investigation during Due Diligence to review regional climate exposures and trends and seek other underwriting options.
Picture of Erin Jackson

Erin Jackson

Owner Representative

Share:

More Posts

Send Us A Message