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' );