Cara menggunakan redirect to 404 wordpress

Cara redirect error 404 ke homepage di wordpress.

Beberapa waktu lalu ada customer yang bertanya bagaimana sih cara redirect error 404 ke homepage di wordpress? Oke berikut adalah langkah langkah yang bisa ente lakukan biar halaman error 404 anda bisa redirect ke halaman homepage di situs dengan CMS wordpress.

1. Edit file 404.php anda dan hapus semua kode yang ada, lalu sisipkan kode berikut:

<?php
header("Status: 301 Moved Permanently");
header("Location:http://namasitusanda.tld");
?>

Ubah http://namasitusanda.tld dengan situs anda sendiri misal kalau bostheme.com maka diubah menjadi http://bostheme.com

Lihat hasil codingnya dibawah dalam bentuk gambar:

KLIK GAMBAR UNTUK MELIHAT GAMBAR DALAM UKURAN ASLI

Cara menggunakan redirect to 404 wordpress

redirect 404 di wordpress

Good luck, kalau ada yang gak berhasil silahkan komen saja!

Saya perlu memaksa 404 pada beberapa posting berdasarkan kondisi. Saya berhasil melakukannya (walaupun saya tidak tahu apakah saya melakukannya dengan cara yang benar) dan saya mendapatkan template 404.php saya untuk memuat seperti yang diharapkan.

Kode saya:

function rr_404_my_event() {
  global $post;
  if ( is_singular( 'event' ) && !rr_event_should_be_available( $post->ID ) ) {
    include( get_query_template( '404' ) );
    exit; # so that the normal page isn't loaded after the 404 page
  }
}

add_action( 'template_redirect', 'rr_404_my_event', 1 );

Kode 2 dari pertanyaan terkait ini - masalah yang sama:

function rr_404_my_event() {
  global $post;
  if ( is_singular( 'event' ) && !rr_event_should_be_available( $post->ID ) ) {
    global $wp_query;
    $wp_query->set_404();
  }
}

add_action( 'wp', 'rr_404_my_event' );

Masalah Saya:

Meskipun terlihat bagus, saya mendapatkan status 200 OK jika saya memeriksa tab jaringan. Karena ini adalah status 200, saya khawatir mesin pencari akan mengindeks halaman-halaman itu juga.

Perilaku yang Diharapkan:

Saya ingin status 404 Not Found dikirim.

Anda dapat mencoba fungsi Wordpress status_header() untuk menambahkan header HTTP/1.1 404 Not Found;

Jadi Kode 2 contoh Anda adalah:

function rr_404_my_event() {
  global $post;
  if ( is_singular( 'event' ) && !rr_event_should_be_available( $post->ID ) ) {
    global $wp_query;
    $wp_query->set_404();
    status_header(404);
  }
}
add_action( 'wp', 'rr_404_my_event' );

Fungsi ini misalnya digunakan di bagian ini:

function handle_404() {
    ...cut...
    // Guess it's time to 404.
    $wp_query->set_404();
    status_header( 404 );
    nocache_headers();
    ...cut...
}

dari kelas wp di /wp-includes/class-wp.php.

Jadi coba gunakan ini dimodifikasi Kode 2 contoh selain kode template_include Anda.

Kode ini berfungsi untuk saya:

 add_action ('wp', 'force_404'); 
 fungsi force_404 () {
 global $ wp_query; // $ post (jika diperlukan) 
 if (is_page ()) {// kondisi Anda 
 status_header (404); 
 nocache_headers (); 
 termasuk get_query_template ('404')); 
 die (); 
} 
} 

Saya tidak akan merekomendasikan memaksa 404.

Jika Anda khawatir tentang mesin pencari, mengapa tidak melakukan meta "no-index, no-follow" di halaman-halaman itu dan memblokirnya dengan robots.txt?

Ini mungkin cara yang lebih baik untuk memblokir konten agar tidak dilihat

add_filter( 'template_include', 'nifty_block_content', 99 );

function nifty_block_content( $template ) {
  if ( is_singular( 'event' ) && !rr_event_should_be_available( $post->ID ) ) {
        $template = locate_template( array( 'nifty-block-content.php' ) );
     }
    return $template;
}

Anda mungkin juga dapat menggunakan metode ini untuk memuat 404.php tapi saya merasa bahwa menggunakan templat halaman mungkin merupakan opsi yang lebih baik.

sumber

Solusi saya:

add_action( 'wp', 'my_404' );
function my_404() 
{
    if ( is_404() ) 
    {
        header("Status: 404 Not Found");
        $GLOBALS['wp_query']->set_404();
        status_header(404);
        nocache_headers();
        //var_dump(getallheaders()); var_dump(headers_list()); die();
    }
}

Kode status dikirim di tajuk permintaan HTTP. Fungsi Anda saat ini terhubung ke hook yang akan dipanggil terlambat.

Anda harus mencoba menghubungkan fungsi Anda rr_404_my_event() menjadi tindakan send_headers.

Saya tidak yakin apakah pada saat itu bahkan mungkin untuk memeriksa ID Post, tetapi coba ini:

add_action( 'send_headers', 'rr_404_my_event' );
function rr_404_my_event() {
    global $post;
    if ( is_singular( 'event' ) && !rr_event_should_be_available( $post->ID ) ) {
        include( get_query_template( '404' ) );
        header('HTTP/1.0 404 Not Found');
        exit; 
    }
}