Neu! – Die brandneue Version MultilingualPress 3.5!

Kopieren von Post-Meta zu Remote-Seiten

Dieser Code-Ausschnitt zeigt, wie man die Post-Meta auf eine oder mehrere Remote-Seiten kopiert. In diesem Beispiel wird der Wert des Post-Meta yoast_wpseo_title ermittelt und anschließend auf den verknüpften Seiten aktualisiert.

add_action('multilingualpress.metabox_after_relate_posts', function($context, $request) {

    // get post meta value from source site
    $yoastWpseoTitleValue = (string)$request->bodyValue(
        'yoast_wpseo_title',
        INPUT_POST,
        FILTER_SANITIZE_STRING
    );

    // switch to remote sites and save post meta
    $remoteSiteId = $context->remoteSiteId();
    $remotePostId = $context->remotePostId();
    switch_to_blog($remoteSiteId);
    update_post_meta($remotePostId, '_yoast_wpseo_title', $yoastWpseoTitleValue);
    restore_current_blog();
}, 10, 2);

Das Beispiel oben zeigt einen Fall, in dem ein Plugin ein Custom Field registriert hat. Aber es ist auch möglich, Custom Fields, die von WordPress über das Custom Fields UI im Post-Editor generiert wurden, zu verbinden. Als Beispiel: Wir haben ein neues Custom Field my-field auf Seite 1 erstellt und wollen nun den Wert desselben Custom Fields auf Seite 2 synchronisieren. Sobald wir ein Custom Field mit demselben Namen auf Seite 2 erstellt haben, können wir die multilingualpress.metabox_after_relate_posts Action wie folgt nutzen:

add_action('multilingualpress.metabox_after_relate_posts', function ($context, $request) {
    // switch to source site
    switch_to_blog($context->sourceSiteId());

    // grab post meta value
    $value = get_post_meta($context->sourcePostId(), 'my-field', true);

    // switch to remote site
    restore_current_blog();

    // update post meta
    update_post_meta($context->remotePostId(), 'my-field', $value);
}, 10, 2);