it-swarm.com.de

So leiten Sie den Besucher mit auf eine benutzerdefinierte URL um PHP Code in functions.php

Die Benutzer müssen zu einer benutzerdefinierten URL umgeleitet werden, die ich bereits kenne (Teil der Programmierlogik). Ich muss nur wissen, welche WP -Funktion verwendet werden soll/welcher PHP-Code verwendet werden soll, um den Benutzer zur neuen URL umzuleiten. Dieser Code wird in einer PHP-Funktion in functions.php ausgeführt -> diese Funktion führt zuerst eine Verarbeitung durch und sendet dann den Benutzer an die neue URL

Wie mache ich das oben?

Hinweis: Ich habe versucht, wp_redirect zu verwenden, aber es funktioniert nicht.

Dies ist der Code, den ich verwendet habe (der nicht funktioniert hat) -

       $redirecturl = get_post_type_archive_link('property');
       echo "\n\n Redirect URL for property posts=" + $redirecturl;
       wp_redirect( "http://" .  $redirecturl + "?post_type=property&search_keyword=" + $search_keyword ;
1
Arvind

Erstens ist es schwer zu glauben, dass wp_redirect nicht funktioniert. Nachfolgend finden Sie einige Beispiele für die Verwendung von Code:

function wpse101952_redirect() {
  global $post;

    if( /*SOME CONDITIONAL LOGIC*/ ) { //examples: is_home() or is_single() or is_user_logged_in() or isset($_SESSION['some_var'])

        wp_redirect( /*SOME SPECIFIC URL*/ );

        exit();
    }
}
add_action( 'template_redirect', 'wpse101952_redirect' );

Zweitens stellt sich die Frage, ob dies der richtige Ansatz für Ihren Fall ist. Damit Sie sich jedoch für eine Entscheidung entscheiden können, sollten Sie näher erläutern, was Sie ein bisschen mehr tun möchten.


bearbeiten:

Die Funktion get_post_type_archive_link() gibt Ihnen den vollständigen Permalink, Sie müssen http:// und ?post_type=property nicht hinzufügen:

   wp_redirect( $redirecturl . "?search_keyword=" . $search_keyword );
5
Nicolai

Wenn Sie etwas Ähnliches wie Ihren Code ausführen, wird im Fehlerprotokoll die folgende Warnung angezeigt:

Warning: Cannot modify header information - headers already sent by (output started at /xxx/wordpress/wp-content/themes/balance/functions.php:4) in /xxx/wordpress/wp-includes/pluggable.php on line 876

Als ich das zum Testen benutzte:

$redirecturl = 'google.com';
wp_redirect( 'http://' .  $redirecturl );
exit;

Alles funktioniert gut, versuchen Sie es also:

$redirecturl = get_post_type_archive_link( 'property' );
wp_redirect( 'http://' .  $redirecturl . '?post_type=property&search_keyword=' . $search_keyword );
exit;

Der exit Code wird in der Funktionsreferenz empfohlen.

2