web-dev-qa-db-ja.com

を使用して訪問者をカスタムURLにリダイレクトする方法 PHP functions.phpのコード

ユーザーは私が既に知っているカスタムURL(プログラミングロジックの一部)にリダイレクトされなければなりません。ユーザを新しいURLにリダイレクトするためにどのWP関数を使うべきか/どんなphpコードを使うべきかを知る必要があります。このコードはfunctions.phpのphp関数内で実行されます - その関数はまず何らかの処理を行い、それからユーザーを新しいURLに送ります。

上記の方法は?

注 - 私はwp_redirectを使ってみましたが、うまくいきません。

これは私が使用しようとしたコードです(それはうまくいきませんでした) -

       $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

まず、wp_redirectがうまくいかないことを信じるのは難しいです。

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

次に、それがあなたのケースにとって正しいアプローチであるかどうかという疑問がありますが、そのためには、もう少しやろうとしていることについて詳しく説明する必要があります。


編集:

関数get_post_type_archive_link()はあなたに完全なパーマリンクを与えます、あなたはhttp://?post_type=propertyを加える必要はありません:

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

あなたのコードに似たものを実行すると、エラーログにこの警告が表示されます。

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

これを使ってテストしたとき:

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

すべてうまくいくので、試してみるとよいでしょう。

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

exitコードは 関数リファレンス で推奨されています。

2