it-swarm.com.de

Übergabe der aktuellen Cookies in wp_remote_get, um eine Vorschau des Entwurfs zu erhalten

Ich möchte aktuelle Benutzer-Cookies in der Funktion wp_remote_get übergeben, um den Inhalt einer Entwurfs-Post-Preview-Seite zu erhalten.

Ich überprüfe schon die Fragen:

Aber in jedem von ihnen erscheint, wie ich die Cookies dazu bringen kann, sie an wp_remote_get function weiterzuleiten.

Ich gehe davon aus, dass ich tun kann, was ich will, indem ich die Cookies an wp_remote_get function weitergebe, hier in der WordPress-Dokumentation erwähne, wie WordPress die Cookies speichert, aber wie kann ich dafür sorgen, dass sie einen Hash-Wert im Cookie verwenden Name?

Ich möchte eine Post-ID erhalten, um den Inhalt der WordPress Post-Ansichtsseite abzurufen und zu analysieren. Für die bereits veröffentlichten Posts funktioniert alles einwandfrei, aber für Draft Posts verstehe ich, dass die Seite nicht existiert. Hier ist der Code vereinfacht:

(...)
$post_permalink = get_permalink($post_id);
$response = wp_remote_get($post_permalink);
$whole_post_page = $response['body'];
(...)

Dieser Code wird ausgeführt, wenn der Eigentümer des Beitrags ihn bearbeitet. Der Benutzer ist also bereits authentifiziert und die Anforderung betrifft einen lokalen Beitrag. Wie kann ich erreichen, dass wp_remote_get mir den Inhalt der Post Preview-Seite zurückgibt? wie WordPress, wenn ich in meinem Browser auf den Vorschau-Link gehe.

Danke im Voraus.

8
leticia

Ich beschäftige mich selten mit Cookies und bin mir nicht sicher, ob die Mechanik vollständig ist. Hier ist jedoch ein grundlegendes Arbeitsbeispiel für das Übergeben von Cookies des aktuellen Benutzers, um die Quelle der Vorschauseite abzurufen:

$preview_link = set_url_scheme( get_permalink( $post->ID ) );
$preview_link = esc_url( apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $preview_link ) ) );
$cookies      = array();

foreach ( $_COOKIE as $name => $value ) {
    $cookies[] = new WP_Http_Cookie( array( 'name' => $name, 'value' => $value ) );
}

$request = wp_remote_get( $preview_link, array( 'cookies' => $cookies ) );
$body    = wp_remote_retrieve_body( $request );
5
Rarst

In welchem ​​Szenario versuchen Sie, eine Entwurfspostvorschau aus Ihrer aktuellen Installation abzurufen, die sich auf einer anderen befindet, richtig?

Authentifizieren Sie sich vor dem Abrufen?

Ich denke, dass Sie verwenden müssten,

wp_signon($credentials, $secure_cookie); $secure_cookie is boolean

Dann müssen Sie möglicherweise auch ausführen,

wp_set_current_user($user_id);

Möglicherweise wird wp_set_current_user benötigt, um auf die Vorschau zuzugreifen (?). Ich sage, ich bin mir da nicht hundertprozentig sicher, aber ich glaube, dass es für den Post-Edit-Bildschirm notwendig ist. Da es sich also um eine Erweiterung handelt, würde man dies annehmen. Ich hatte noch keine Gelegenheit, mich in den Kerndateien nach einer Bestätigung umzusehen.

Dadurch sollten die Cookies für Sie festgelegt und Sie können Ihre Vorschau anzeigen, was bedeutet, dass Sie theoretisch nichts an den Cookie-Array-Parameter übergeben müssen, da diese bereits festgelegt sind.

Sehen wir uns auch Ihren Code an!

0
userabuser