I think your problem has several solutions. If you don’t want to have one entry in WP database for each remote item, a possible solution could be to have a page with property
slug and add a rewrite rule to get the ID number:
add_action( 'init', 'cyb_property_rewrite_rule' );
function cyb_property_rewrite_rule() {
add_rewrite_rule( '^property/([0-9]{1,})/?$', 'index.php?pagename=$matches[1]&remote_ID=$matches[2]', 'top' );
}
//Add remote_ID to vars pool to be recognized by WordPress
add_filter('query_vars', 'cyb_add_query_vars');
function cyb_add_query_vars( $vars) {
$vars[] = "remote_ID";
return $vars;
}
Now, the ID of the item you want to retrieve is stored in remote_ID
query var that you can get through get_query_var:
$item_ID = get_query_var('remote_ID');
You could create a page template for that page and, in the content, you cuould get the remote item:
<?php
/*
Template Name: Property Page Template
*/
get_header();
?>
<div id="content">
<?php
$remote_item = cyb_get_the_property();
?>
</div>
<?php
get_footer();
?>
And in the cyb_get_the_property()
you can fetch the data:
function cyb_get_the_property() {
$item_ID = get_query_var('remote_ID');
//Itegrate with the remote CMR API
$item_data="";
return $item_data;
}