Übergeben Sie aktuelle Cookies in wp_remote_get, um die Draft Post Preview zu erhalten


9

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

Ich überprüfe bereits die Fragen:

Aber in beiden erscheint, wie ich die Cookies dazu bringen kann, sie an die Funktion wp_remote_get zu übergeben .

Ich gehe davon aus, dass ich tun kann, was ich will, um die Cookies an die Funktion wp_remote_get zu übergeben. Erwähnen Sie hier in der WordPress-Dokumentation, wie WordPress die Cookies speichert, aber wie kann ich sie dazu bringen, darauf zu achten, dass sie einen Hashwert im Cookie-Namen verwenden?

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 habe ich festgestellt, 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 der Post ihn bearbeitet, sodass der Benutzer bereits authentifiziert ist und eine lokale Post angefordert wird. Wie kann ich erreichen, dass wp_remote_get mir den Inhalt der Post Preview-Seite zurückgibt? wie WordPress, wenn ich in meinem Browser zum Vorschau-Link gehe.

Danke im Voraus.

Antworten:


7

Ich beschäftige mich selten mit Cookies und bin mir dort nicht sicher, ob die Mechanik vollständig ist. Hier ist jedoch ein grundlegendes Beispiel für das Übergeben der 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 );

0

Wie sieht das Szenario hier aus? Sie versuchen, einen Entwurf einer Postvorschau aus Ihrer aktuellen Installation abzurufen, die sich auf einer anderen befindet.

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

Wird wp_set_current_usermöglicherweise benötigt, um tatsächlich auf die Vorschau zuzugreifen (?). Ich werde sagen, dass ich mir da nicht 100% sicher bin, aber ich glaube, dass es für den Post-Edit-Bildschirm notwendig ist. Als Erweiterung davon würde man dies annehmen. Ich hatte noch keine Gelegenheit, mich in den Kerndateien nach Bestätigung umzusehen.

Das sollte die Cookies für Sie setzen und es Ihnen ermöglichen, Ihre Vorschau anzuzeigen, was bedeutet, dass Sie theoretisch nichts an den Cookie-Array-Parameter übergeben müssen, da diese bereits gesetzt sind.

Sehen wir uns auch Ihren Code an!


Danke, ich aktualisiere die Frage mit den Informationen, die Sie mir stellen.
Leticia

Die Funktionen, auf die verwiesen wird, helfen mir nicht, da der Benutzer bereits angemeldet ist und ich seine Cookies verwenden möchte, um die Vorschau eines Entwurfs zu erhalten.
Leticia
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.