Wordpress插件template_redirect抛出404

时间:2013-04-09 15:08:56

标签: php wordpress plugins http-status-code-404

我正在尝试使用template_redirect通过Wordpress中的URL加载插件的特定文件。文件正确显示,但发送的标头是404,而不是200。

插件中的代码是:

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?

1 个答案:

答案 0 :(得分:5)

Wordpress可能无法识别此插件或数据并引发404状态。

要对抗404状态,只需测试它,删除该标志,然后使用include发送标题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');

来源here