Redirecționare URL-ul paginii către URL-ul principal fără a folosi un plugin

14 mar. 2015, 06:58:35
Vizualizări: 68.3K
Voturi: 14

Cum pot redirecționa acest URL al paginii, http://localhost/wordpress_rnd/?page_id=2, către URL-ul principal, http://localhost/wordpress_rnd/, fără a folosi vreun plugin?

0
Toate răspunsurile la întrebare 4
2
22

Modul corect de a face acest lucru este prin utilizarea hook-ului template_redirect prin adăugarea unei funcții în fișierul functions.php:

function redirect_to_home() {
  if(!is_admin() && is_page('2')) {
    wp_redirect(home_url());
    exit();
  }
}
add_action('template_redirect', 'redirect_to_home');
15 mar. 2015 03:39:20
Comentarii

mi-ai putea spune de ce trebuie să folosim exit după wp_redirect(home_url()); ?

D.JCode D.JCode
5 ian. 2021 18:22:37

Bună întrebare și nu pot spune cu siguranță, dar știu că exemplul din documentația oficială folosește exit, așa că și eu îl folosesc.

cfx cfx
5 ian. 2021 22:42:28
0
add_action( 'init', function() {
    if ( 0 === stripos( $_SERVER['REQUEST_URI'], '/page_id=2' ) ) {

       wp_redirect( home_url(), 301 );
       exit;

    }
}

Puneți acest cod într-un mu-plugin sau în fișierul functions.php al temei

14 mar. 2015 11:31:35
6
-1

Localizați fișierul page.php (presupunând că l-ați creat deja). După această linie <?php get_header(); ?> adăugați următorul cod:

<?php if(is_page('2')) {
    wp_redirect( home_url(), '302' ); 
} ?>

În codul de mai sus, is_page('2') reprezintă de fapt ID-ul paginii dumneavoastră, așa cum ați specificat în exemplu.

14 mar. 2015 10:01:02
Comentarii

Aceasta poate face treaba, dar cred că este mai bine, în funcție de situația exactă, să faci redirecționarea la nivel de server, de exemplu folosind .htaccess, astfel încât nicio linie de cod să nu fie executată și să nu irosești resurse.

cybmeta cybmeta
14 mar. 2015 11:09:20

@cybmeta punct de vedere valid într-adevăr :) Mulțumesc că mi-ai atras atenția.

cristian.raiber cristian.raiber
14 mar. 2015 13:38:54

Încă o observație. Folosește codul tău într-un action hook, cum ar fi init sugerat de @paul în răspunsul său, nu într-un fișier de template cum ai sugerat tu. Dacă schimbi tema, pierzi funcționalitatea, de aceea funcționalitățile și aspectul (tema și fișierul de template) ar trebui separate. Aș edita răspunsul pentru a adăuga action hook-ul.

cybmeta cybmeta
14 mar. 2015 13:53:14

Adevărat și asta. Sunt momente când nu te gândești la optimizarea codului, ci te concentrezi doar să rezolvi rapid sarcina de față :) Cred că acesta a fost unul din acele scenarii.

Cu toate acestea, apreciez mult feedback-ul tău și e foarte valoros - în fiecare zi învăț ceva nou aici :)

cristian.raiber cristian.raiber
14 mar. 2015 16:36:38

Scrierea codului într-un action hook este la fel de rapidă ca scrierea lui într-un fișier de template.

cybmeta cybmeta
14 mar. 2015 16:39:27

Vorbeam și despre soluții. Uneori, trebuie doar să gândești rapid și să rezolvi o sarcină urgentă, alteori trebuie să optimizezi o bucată de cod. Oricum, din punctul meu de vedere, niciun cod nu este rău.

cristian.raiber cristian.raiber
14 mar. 2015 19:45:58
Arată celelalte 1 comentarii
0
-1

WP_REDIRECT este funcția pe care trebuie să o folosești pentru redirecționare în WordPress. Poate fi utilizată astfel:

wp_redirect( $location, $status );
exit;
// $location este parametrul obligatoriu. Este folosit pentru a specifica URL-ul țintă către care va fi redirecționată pagina.
// $status este opțional. Este folosit pentru a seta codul de stare. Valoarea implicită este 302

Poți folosi această funcție pentru a redirecționa utilizatorii de la o pagină la alta. Ar trebui plasată fie în fișierul functions.php, fie în fișierul template care este folosit pentru afișarea paginii curente. Pentru a o folosi în situația ta, pur și simplu plasează următorul cod la sfârșitul fișierului tău functions.php

$redirectFromPageID = 2;  // Redirecționează de la pagina cu ID-ul 2
$redirectTo = home_url(); // Redirecționează către URL-ul de acasă

if( is_page( $redirectFromPageID ) ){
    wp_redirect( $redirectTo  );
    exit;
}
14 mar. 2015 13:12:20