wake-up-neo.net

Aktuelle Seiten-URL abrufen (einschließlich Paginierung)

Gibt es eine WP -Funktion, um automatisch die richtige URL der aktuellen Seite abzurufen? Das heißt, wenn ich gerade einen einzelnen Beitrag geöffnet habe, gibt die Funktion dasselbe zurück wie get_permalink(), aber wenn ich mich auf einer paginierten Instanz einer Seite befinde (wenn ich durch die Kommentare paginiere), gibt die Funktion dasselbe zurück, wie es get_pagenum_link(get_query_var('paged')) tun würde.

Ich habe den Codex durchsucht, aber nicht gefunden, wonach ich gesucht habe. (Aber auch get_pagenum_link() ist dort nicht dokumentiert.)

Ich kenne diese Funktion bereits, würde mich aber freuen, wenn es eine "native" WP -Funktion gäbe, die diese Aufgabe erfüllt.

Danke im Voraus! Grüße, René

12
René Schubert

Zusätzlich zur Antwort von Rajeev Vyas müssen Sie keine nicht leeren Parameter an add_query_arg() übergeben. Folgendes hat bei mir immer gut funktioniert:

// relative current URI:
$current_rel_uri = add_query_arg( NULL, NULL );

// absolute current URI (on single site):
$current_uri = home_url( add_query_arg( NULL, NULL ) );

Die Funktion greift auf $_SERVER[ 'REQUEST_URI' ] zurück und wendet urlencode_deep() darauf an. Siehe https://github.com/WordPress/WordPress/blob/3.8/wp-includes/functions.php#L673

Edit: Da $_SERVER[ 'REQUEST_URI' ] eine ungefilterte Benutzereingabe darstellt, sollte der Rückgabewert von add_query_arg() immer ignoriert werden, wenn der Kontext geändert wird. Verwenden Sie beispielsweise esc_url_raw() für die DB-Verwendung oder esc_attr() oder esc_url() für HTML.

Update

Das angezeigte Beispiel, das einen absoluten URI erstellen soll (der Schema und Host enthält), funktioniert nicht auf Multisite-Verzeichnissen mit Unterverzeichnissen, da home_url() den vollständigen URI einschließlich eines Pfadsegments zurückgeben würde. Eine bessere Lösung für Multisite-fähigen Code wäre:

// absolute URI in multisite aware environment
$parts = parse_url( home_url() );
$current_uri = "{$parts['scheme']}://{$parts['Host']}" . add_query_arg( NULL, NULL );

Der WordPress-Core unterstützt keinen Port, keinen Benutzer und kein Kennwort in einer URL mit mehreren Sites. Dies sollte also ausreichen.

22
David
global $wp;
$current_url = add_query_arg( $wp->query_string, '', home_url( $wp->request ) );

Keine Funktion, aber definitiv mit WordPress-Code.

http://kovshenin.com/2012/current-url-in-wordpress/

3
Rajeev Vyas

1) $_SERVER['REQUEST_URI'] - Gibt die URL für den Zugriff auf die Seite zurück, auf der das Skript ausgeführt wird. Wenn Sie http://www.example.com/product.php?id=5 eingeben müssen, um auf die Seite zuzugreifen, gibt $_SERVER['REQUEST_URI']/product.php?id=5 zurück.

2) $_SERVER['DOCUMENT_ROOT'] - Gibt das Stammverzeichnis des Servers zurück, das in der Konfigurationsdatei des Servers angegeben ist. Diese Variable gibt normalerweise den Pfad wie /usr/yoursite/www unter Linux und D:/xamps/xampp/htdocs unter Windows zurück.

3) $_SERVER['HTTP_Host'] - Gibt den Hostnamen zurück, der im http-Header enthalten ist. Diese Variable gibt normalerweise den Pfad example.com zurück, wenn Sie http://example.com in der Adressleiste des Browsers finden, und www.example.com, wenn Sie http://www.example.com in der Adressleiste sehen. Dies ist sehr nützlich, wenn Sie die Sitzung bei der Online-Zahlung mit PHP beibehalten möchten, da die für http://example.com gespeicherte Sitzung nicht mit der für http://www.example.com übereinstimmt.

4) $_SERVER['HTTP_USER_AGENT'] - Gibt die Details des Benutzeragenten (Browsers) zurück, der auf die Webseite zugreift. Wir können strpos($_SERVER["HTTP_USER_AGENT"],”MSIE”) verwenden, um Microsoft Internet Explorer zu erkennen, oder Sie können strpos($_SERVER["HTTP_USER_AGENT"],”Firefox”) verwenden, um Firefox-Browser in PHP zu erkennen.

5) $_SERVER['PHP_SELF'] - Gibt den Dateinamen des aktuell ausgeführten Skripts zurück. Nehmen wir an, Sie greifen auf die URL http://www.example.com/product.php?id=5 zu und $_SERVER['PHP_SELF'] gibt /product.php in Ihrem Skript zurück.

6) $_SERVER['QUERY_STRING'] - Gibt die Abfragezeichenfolge zurück, wenn die Abfragezeichenfolge für den Zugriff auf das aktuell ausgeführte Skript verwendet wird. Abfragezeichenfolgen sind Zeichenfolgen, die nach dem Zeichen "?" Verfügbar sind. Wenn Sie $_SERVER['QUERY_STRING'] im Skript verwenden, das die folgende URL ausführt, http://www.example.com/index.php?id=5&page=product, wird id=5&page=product in Ihrem Skript zurückgegeben.

7) $_SERVER['REMOTE_ADDR'] - Gibt die IP-Adresse des Remote-Computers zurück, der auf die aktuelle Seite zugreift. Sie können sich jedoch nicht auf $_SERVER['REMOTE_ADDR'] verlassen, um die tatsächliche IP-Adresse des Client-Computers abzurufen. In diesem Artikel erfahren Sie, wie Sie echte IP-Adressen in PHP erhalten.

8) $_SERVER['SCRIPT_FILENAME'] - Gibt den absoluten Pfad der aktuell ausgeführten Datei zurück. Es gibt einen Pfad wie var/example.com/www/product.php in Linux und einen Pfad wie D:/xampp/xampp/htdocs/test/example.php in Windows zurück.

0
Foxsk8

Bei mir funktioniert <?php esc_url(the_permalink()); ?> (auf einer Archivseite mit Paginierung).

0
Henning Fischer

add_query_args( null, null ) erstellt ein Array-Element mit dem leeren Schlüssel ($qs[""] = null), obwohl dies das Ergebnis nicht beeinflusst.


Nach add_query_arg () | Funktion | WordPress Developer Resources , der 2., 3. Parameter sind optional und können weggelassen werden.

add_query_args( null, null ) kann kürzer sein .

$current_url = add_query_args( [] );

Es gibt auch die kürzeste Version , obwohl dies nicht empfohlen wird, da der 1. Parameter der erforderliche Parameter ist.

$current_url = add_query_args();

Beachten Sie außerdem, dass sowohl home_url( add_query_vars( [] ) ) als auch home_url( add_query_arg( null, null ) ) möglicherweise keine tatsächliche URL zurückgeben , wenn WordPress in einem Unterverzeichnis installiert ist.

z.B. https://example.com/wp/wp/foo wird möglicherweise zurückgegeben, wenn WordPress in https://example.com/wp/ installiert ist.


Update: 23.01.2017

Meine Version basiert auf der Lösung von David, um die absolute URL zu erhalten.

$parts = parse_url(home_url());
$uri   = $parts['scheme'] . '://' . $parts['Host'];

if (array_key_exists('port', $parts)) {
    $uri .= ':' . $parts['port'];
}

$uri .= add_query_arg([]);
0
Whizark

wp_guess_url ist was Sie suchen.

Errate die URL für die Site.

Entfernt wp-admin-Links, um nur die zurückgegebenen URLs abzurufen, die sich nicht im wp-admin-Verzeichnis befinden.

0
Jesse