Objekte verschiedener Makler einer Multisite in einer gemeinsamen Seite ausgeben

Für diesen Fall verwendet man eine Proxy-Funktion, die wir im folgenden Beispiel in einen einfach zu nutzenden Shortcode eingebunden haben.

Mit dem Shortcode kann analog zur regulären Variante [inx-property-list], Immobilienlisten aus einer beliebigen anderen WP-Netzwerk-Website eingebunden werden können.

Die ID der Quell-Site wird mit dem Attribut source_site_id definiert:

[inx-property-list-proxy source_site_id=1 property-type="haeuser"]

Alle weiteren Attribute werden 1:1 an die eigentliche Listen-Rendering-Funktion „durchgeschleift“, entsprechen also denen von [inx-property-list].

/**
 * [immonex Kickstart] Proxy-Shortcode zur Einbindung von Immobilienlisten einer
 * anderen Website (per Attribut: source_site_id=X) innerhalb der gleichen
 * WP-Multisite-Installation.
 */
function inx_property_list_proxy( $atts ) {
  $switched = false;
  if ( ! empty( $atts['source_site_id'] ) ) {
    switch_to_blog( (int) $atts['source_site_id'] );
    $switched = true;
  }
  $proxy_atts = '';
  if ( ! empty( $atts ) ) {
    $proxy_atts_temp = array();
    foreach ( $atts as $key => $value ) {
      if ( 'source_site_id' === $key || empty( $value ) ) {
        continue;
      }
      $proxy_atts_temp[] = wp_sprintf(
        '%s="%s"',
        sanitize_key( $key ),
        sanitize_text_field( $value )
      );
    }
    $proxy_atts = ' ' . implode( ' ', $proxy_atts_temp );
  }
  $shortcode = "[inx-property-list{$proxy_atts}]";
  $content = do_shortcode( $shortcode );
  if ( $switched ) {
    restore_current_blog();
  }
  return $content;
}
add_shortcode( 'inx-property-list-proxy', 'inx_property_list_proxy' );