Cum să redirecționezi vizitatorii către un URL personalizat folosind cod PHP în functions.php
Utilizatorii trebuie să fie redirecționați către un URL personalizat pe care îl cunosc deja (face parte din logica programării). Am nevoie doar să știu ce funcție WordPress să folosesc/ce cod PHP să utilizez pentru a redirecționa utilizatorul către noul URL. Acest cod va fi executat într-o funcție PHP în functions.php--> acea funcție va face mai întâi o procesare, și apoi va trimite utilizatorul către noul URL
Cum pot face acest lucru?
Notă-- Am încercat să folosesc wp_redirect dar nu funcționează.
Acesta este codul pe care am încercat să-l folosesc (care nu a funcționat)--
$redirecturl = get_post_type_archive_link('property');
echo "\n\n URL-ul de redirecționare pentru postări de tip proprietate=" + $redirecturl;
wp_redirect( "http://" . $redirecturl + "?post_type=property&search_keyword=" + $search_keyword ;
În primul rând, este greu de crezut că wp_redirect
nu funcționează, mai jos este un cod (exemplu) care arată cum să-l folosești:
function wpse101952_redirect() {
global $post;
if( /*LOGICĂ CONDITIONALĂ*/ ) { //exemple: is_home() sau is_single() sau is_user_logged_in() sau isset($_SESSION['some_var'])
wp_redirect( /*URL SPECIFIC*/ );
exit();
}
}
add_action( 'template_redirect', 'wpse101952_redirect' );
În al doilea rând, se pune întrebarea dacă aceasta este abordarea corectă pentru cazul tău, dar pentru a decide asta ar trebui să explici mai detaliat ce încerci să realizezi.
edit:
Funcția get_post_type_archive_link()
îți oferă permalink-ul complet, nu este nevoie să adaugi http://
și ?post_type=property
:
wp_redirect( $redirecturl . "?search_keyword=" . $search_keyword );

Rulezând ceva similar cu codul tău, primesc această avertizare în jurnalul de erori:
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
Când am folosit acest cod pentru test:
$redirecturl = 'google.com';
wp_redirect( 'http://' . $redirecturl );
exit;
Totul funcționează corect, așa că poți încerca:
$redirecturl = get_post_type_archive_link( 'property' );
wp_redirect( 'http://' . $redirecturl . '?post_type=property&search_keyword=' . $search_keyword );
exit;
Codul exit
este recomandat în Referința de Funcții.
