Reindirizzare l'URL della pagina all'URL principale senza utilizzare plugin

14 mar 2015, 06:58:35
Visualizzazioni: 68.3K
Voti: 14

Come posso reindirizzare questo URL di pagina, http://localhost/wordpress_rnd/?page_id=2, all'URL principale, http://localhost/wordpress_rnd/, senza utilizzare alcun plugin?

0
Tutte le risposte alla domanda 4
2
22

Il modo corretto per farlo è utilizzare l'hook template_redirect aggiungendo una funzione al tuo file 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
Commenti

potresti dirmi perché dobbiamo usare exit dopo wp_redirect(home_url()); ?

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

Buona domanda e non posso dirlo con certezza, ma so che l'esempio nella documentazione ufficiale lo utilizza, quindi lo uso anch'io.

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

       wp_redirect( home_url(), 301 );
       exit;

    }
}

Aggiungi questo codice in un mu-plugin o nel file functions.php del tuo tema

14 mar 2015 11:31:35
6
-1

Individua il file page.php (supponendo che tu l'abbia già creato). Dopo questa riga <?php get_header(); ?> aggiungi il seguente codice:

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

Nel codice sopra, is_page('2') rappresenta in realtà l'ID della tua pagina come specificato nel tuo esempio.

14 mar 2015 10:01:02
Commenti

Questo può funzionare, ma penso che sia meglio, a seconda della situazione specifica, fare il reindirizzamento a livello di server, ad esempio utilizzando .htaccess, in modo che nessuna riga di codice venga eseguita e non si sprechino risorse.

cybmeta cybmeta
14 mar 2015 11:09:20

@cybmeta ottimo punto infatti :) Grazie per avermelo fatto notare.

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

Un'altra nota. Usa il tuo codice in un action hook, come init suggerito da @paul nella sua risposta, non in un file template come hai suggerito. Se passi a un altro tema, perdi la funzionalità, ed è per questo che le funzionalità e l'aspetto (tema e file template) dovrebbero essere separati. Modificherei la risposta per aggiungere l'action hook.

cybmeta cybmeta
14 mar 2015 13:53:14

Vero anche questo. Ci sono momenti in cui non si pensa all'ottimizzazione del codice, ma l'obiettivo è completare il compito a portata di mano più velocemente :) Questo era (secondo me) uno di quegli scenari.

Tuttavia, apprezzo molto il tuo contributo ed è davvero prezioso - ogni giorno imparo qualcosa di nuovo qui :)

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

Scrivere il tuo codice in un action hook è veloce tanto quanto scriverlo in un file template.

cybmeta cybmeta
14 mar 2015 16:39:27

Mi riferivo anche alle soluzioni. A volte devi solo pensare velocemente e risolvere un lavoro rapido, altre volte devi ottimizzare un pezzo di codice. Tuttavia, nessun codice è cattivo, almeno dal mio punto di vista.

cristian.raiber cristian.raiber
14 mar 2015 19:45:58
Mostra i restanti 1 commenti
0
-1

WP_REDIRECT è la funzione che devi utilizzare per i reindirizzamenti in WordPress. Può essere usata nel seguente modo:

wp_redirect( $location, $status );
exit;
//$location è un parametro obbligatorio. Serve a specificare l'URL di destinazione verso cui la pagina verrà reindirizzata.
//$status è opzionale. Viene utilizzato per impostare il codice di stato. Il valore predefinito è 302

Puoi utilizzare questa funzione per reindirizzare gli utenti da una pagina ad un'altra. Dovrebbe essere posizionata nel file functions.php o nel template file che viene utilizzato per visualizzare la pagina corrente. Per usarla nella tua situazione, inserisci semplicemente il seguente codice alla fine del tuo file functions.php

$redirectFromPageID = 2;  //Reindirizza dalla Pagina con ID 2
$redirectTo = home_url(); //Reindirizza alla Homepage

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