0

簡単に編集できる WordPress ページ領域に常駐する「きれいな」カスタム 404 ページをすばやく作成するために使用できる単純なプラグインを作成しました。最近、プラグインが適切な 404 not found ヘッダーを送信していないことを発見しましたが、Google ウェブマスター ツールからソフト 404 が増加したことが通知されました。以下のコードでわかるように、最初に 404 Not found ヘッダーを送信し、次に 301 パーマネント リダイレクトを呼び出します。

概念的には、これはうまくいくはずだと思います (そして、これが他の 404 プラグインで使用されているのを見てきました) が、そうではありません。404 ヘッダーを表示する唯一の方法は、場所ヘッダーの後にヘッダーを送信することですが、空白のページが表示されるため、そのような目的は無効になります。WordPress プラグインでこれを機能させる方法がよくわかりません。WordPress のページ構造内でこれを機能させる方法を確認したいと思います。

関数は次のとおりです。

if ($wp_query->is_404) {
    $page_title = $this->options['404_page_title'];
    $redirect_404_url = esc_url(get_permalink(get_page_by_title($page_title)));
    header("HTTP/1.0 404 Not Found");
    header("HTTP/1.1 301 Moved Permanently");
    header("Location:" . $redirect_404_url);
    die;
}
4

2 に答える 2

0

ついに手に入れました!私を正しい方向に向けてくれてありがとう、ブレイディ!

最初に、404 エラーでプラグインによって作成されたページにリダイレクトする関数を設定しました。次に、ページ タイトルがプラグインによって作成された 404 ページのページ タイトルと一致する場合に、ページに 404 ヘッダー ステータスを追加する別の関数を作成しました。最後に、関数をコンストラクターにフックしました。簡単なことです。:)

404 リダイレクト機能:

public function redirect_404() {
    global $options, $wp_query;
    if ($wp_query->is_404) {
        $page_title = $this->options['404_page_title'];
        $redirect_404_url = esc_url(get_permalink(get_page_by_title($page_title)));
        wp_redirect($redirect_404_url);
        add_action('wp', array(&$this, 'redirection'));
        exit();
    }
}

ページ機能に 404 ヘッダーを適用します。

public function is_page_function() {
    global $options;
    $page_title = $this->options['404_page_title'];
    if (is_page($page_title)) {
        header("Status: 404 Not Found");
    }
}

行動:

add_action('template_redirect', array( &$this, 'redirect_404' ), 0);
add_action('template_redirect', array( &$this, 'is_page_function'), 0);
于 2013-06-06T04:39:42.473 に答える