web-dev-qa-db-fra.com

Comment rediriger le visiteur vers une URL personnalisée à l'aide de PHP code dans functions.php

Les utilisateurs doivent être redirigés vers une URL personnalisée que je connais déjà (partie de la logique de programmation). J'ai juste besoin de savoir quelle fonction WP utiliser/quel code php utiliser pour rediriger l'utilisateur vers la nouvelle URL. Ce code sera exécuté dans une fonction php dans functions.php -> cette fonction effectuera d’abord un traitement, puis enverra l’utilisateur à la nouvelle URL.

Comment puis-je faire ce qui précède?

Note-- J'ai essayé d'utiliser wp_redirect mais cela ne fonctionne pas.

C'est le code que j'ai essayé d'utiliser (cela n'a pas fonctionné) -

       $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

Tout d'abord, il est difficile de croire que wp_redirect ne fonctionne pas, sous un code (exemple), comment l'utiliser:

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

Deuxièmement, il y aurait lieu de se demander si telle est la bonne approche pour votre cas, mais pour que cela soit décidé, vous devez préciser ce que vous essayez de faire un peu plus.


modifier:

La fonction get_post_type_archive_link() vous donne le permalien complet, vous n'avez pas besoin d'ajouter http:// et ?post_type=property:

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

En exécutant quelque chose de similaire à votre code, cet avertissement apparaît dans le journal des erreurs:

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

Quand j'ai utilisé ceci pour tester:

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

Tout fonctionne bien, vous pouvez donc essayer:

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

Le code exit est recommandé dans la référence de la fonction .

2
Charles Clarkson