Как перенаправить посетителя на произвольный URL с помощью PHP-кода в functions.php
Пользователи должны быть перенаправлены на произвольный URL, который мне уже известен (это часть логики программирования). Мне просто нужно знать, какую функцию WP использовать/какой PHP-код применить для перенаправления пользователя на новый URL. Этот код будет выполняться внутри PHP-функции в functions.php--> эта функция сначала выполнит некоторую обработку, а затем отправит пользователя на новый URL
Как мне это сделать?
Примечание -- Я пробовал использовать wp_redirect, но это не работает.
Вот код, который я пытался использовать (который не работает)--
$redirecturl = get_post_type_archive_link('property');
echo "\n\n URL перенаправления для записей недвижимости=" + $redirecturl;
wp_redirect( "http://" . $redirecturl + "?post_type=property&search_keyword=" + $search_keyword ;
Во-первых, трудно поверить, что wp_redirect
не работает. Ниже приведён пример кода, демонстрирующий его использование:
function wpse101952_redirect() {
global $post;
if( /*НЕКОТОРАЯ УСЛОВНАЯ ЛОГИКА*/ ) { //примеры: is_home() или is_single() или is_user_logged_in() или isset($_SESSION['some_var'])
wp_redirect( /*КОНКРЕТНЫЙ URL*/ );
exit();
}
}
add_action( 'template_redirect', 'wpse101952_redirect' );
Во-вторых, возникает вопрос, является ли этот подход правильным для вашего случая, но чтобы решить это, вам следует подробнее описать, что именно вы пытаетесь сделать.
редактирование:
Функция get_post_type_archive_link()
возвращает полную постоянную ссылку, вам не нужно добавлять http://
и ?post_type=property
:
wp_redirect( $redirecturl . "?search_keyword=" . $search_keyword );

При выполнении аналогичного кода я получаю следующее предупреждение в логе ошибок:
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
рекомендуется в Справочнике функций.
