web-dev-qa-db-de.com

Wie wird die URL der aktuellen Seite angezeigt?

Ich möchte benutzerdefinierten PHP Code hinzufügen, um sicherzustellen, dass bei jedem Laden einer Seite auf meiner Website in meinem Browser die URL dieser Seite auf dem Bildschirm wiedergegeben wird. Ich kann echo get_permalink() verwenden, aber das funktioniert nicht auf allen Seiten. Einige Seiten (z. B. meine Homepage ) zeigen mehrere Posts an. Wenn ich get_permalink() auf diesen Seiten verwende, wird die URL der angezeigten Seite nicht zurückgegeben (ich glaube, sie gibt die URL des letzten Posts in der Schleife zurück). Wie kann ich für diese Seiten die URL zurückgeben?

Kann ich get_permalink() an einen bestimmten Hook anhängen, der ausgelöst wird, bevor die Schleife ausgeführt wird? Oder kann ich irgendwie aus der Schleife ausbrechen oder sie zurücksetzen, wenn sie abgeschlossen ist?

Vielen Dank.

43
cag8f

get_permalink() ist nur für einzelne Seiten und Posts wirklich nützlich und funktioniert nur innerhalb der Schleife.

Der einfachste Weg, den ich gesehen habe, ist der folgende:

global $wp;
echo home_url( $wp->request )

$wp->request enthält den Pfadteil der URL, z. /path/to/page und home_url() geben die URL unter "Einstellungen"> "Allgemein" aus. Sie können jedoch einen Pfad anfügen, sodass der Anforderungspfad an die Ausgangs-URL in diesem Code angehängt wird.

Beachten Sie, dass dies wahrscheinlich nicht mit Permalinks funktioniert, die auf Normal gesetzt sind, und Abfragezeichenfolgen (der ?foo=bar-Teil der URL) weglässt.

Um die URL zu erhalten, wenn Permalinks auf "plain" gesetzt sind, können Sie stattdessen $wp->query_vars verwenden, indem Sie sie an add_query_arg() übergeben:

global $wp;
echo add_query_arg( $wp->query_vars, home_url() );

Sie können diese beiden Methoden auch kombinieren, um die aktuelle URL einschließlich der Abfragezeichenfolge abzurufen, unabhängig von den Permalink-Einstellungen:

global $wp;
echo add_query_arg( $wp->query_vars, home_url( $wp->request ) );
71
Jacob Peattie

Sie können den folgenden Code verwenden, um die gesamte aktuelle URL in WordPress abzurufen:

global $wp;
$current_url = home_url(add_query_arg(array(), $wp->request));

Dadurch wird der vollständige Pfad einschließlich der Abfrageparameter angezeigt.

6
rescue1155

Der folgende Code gibt die aktuelle URL an:

global $wp;
echo home_url($wp->request)

Sie können den folgenden Code verwenden, um die vollständige URL zusammen mit den Abfrageparametern abzurufen.

global $wp;  
$current_url = home_url(add_query_arg(array($_GET), $wp->request));

Dadurch wird der vollständige Pfad einschließlich der Abfrageparameter angezeigt. Dadurch werden die Abfrageparameter beibehalten, sofern sie bereits in der URL enthalten sind.

2
function current_location()
{
    if (isset($_SERVER['HTTPS']) &&
        ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) ||
        isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
        $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
        $protocol = 'https://';
    } else {
        $protocol = 'http://';
    }
    return $protocol . $_SERVER['HTTP_Host'] . $_SERVER['REQUEST_URI'];
}

echo current_location();
1
Shree Sthapit

Dies ist ein verbessertes Beispiel, das bereits erwähnt wurde. Es funktioniert, wenn hübsche URLs aktiviert sind. Es wird jedoch verworfen, wenn Abfrageparameter wie/page-slug /? Param = 1 vorhanden sind oder wenn die URL überhaupt hässlich ist.

Das folgende Beispiel funktioniert in beiden Fällen.

    $query_args = array();

    $query = wp_parse_url( $YOUR_URL );

    $permalink = get_option( 'permalink_structure' );

    if ( empty( $permalink ) ) {

        $query_args = $query['query'];

    }

    echo home_url( add_query_arg( $query_args , $wp->request ) )
0
tolginho