3

template_redirect を使用して、Wordpress で URL 経由でプラグインの特定のファイルを読み込もうとしています。ファイルは正しく表示されますが、送信されるヘッダーは 200 ではなく 404 です。

プラグインのコードは次のとおりです。

add_filter('query_vars','plugin_add_jb');
function plugin_add_jb($vars) {
    $vars[] = 'jb_ajax';
    return $vars;
}

add_action('template_redirect', 'plugin_jb_check');
function plugin_jb_check() {
    if(intval(get_query_var('jb_ajax')) == '1') {
        $jb_action = $_GET['action'];
        if($jb_action == 'refer') {
            include('./wp-content/plugins/JobBounties/ajax_refer.php');
        }
        elseif ($jb_action == 'refer_post') {
            include('./wp-content/plugins/JobBounties/ajax_refer_post.php');
        }
        exit;
    }
}

なぜ404を投げているのか誰にも分かりますか?

4

1 に答える 1

9

Wordpress はこのプラグインまたはデータを認識できず、404 ステータスをスローする場合があります。

404 ステータスに対処するには、単純にテストを行い、フラグを削除してから、インクルードを使用してヘッダー 200 ステータスを送信します。

function wp15905643_include($template) {
    global $wp_query;
    if ($wp_query->is_404) {
        $wp_query->is_404 = false;
    }
    header("HTTP/1.1 200 OK");
    include($template);

}

次に、plugin_jb_checkそのように関数で使用し、それが役立つ場合。

wp15905643_include('./wp-content/plugins/JobBounties/ajax_refer.php');

ソースはこちら

于 2013-04-09T15:58:11.077 に答える