在我之前的帖子之后(Full-Ajax Theme: parseJSON error while building a JSON object from a Wordpress custom template) 关于JSON(现已解决)的一些问题,我正在尝试在进行AJAX调用时加载一些替代模板。
如果您不想阅读上一篇文章,请使用简短版本:
在特定的.ajax-link, 通过标头发送请求,其中包含
$.ajax({
            url    : url,
            type   : \'POST\',
            headers: {
                \'X-Requested-With\':\'MDXMLHttpRequest\'
            }
        }).done(function() {
        //do stuff...
});
 然后在我的插件中调用相关函数:
add_filter( \'template_include\', \'md_template_include\' );
function md_template_include( $template ) {
    if( isset( $_SERVER[\'HTTP_X_REQUESTED_WITH\'] ) && $_SERVER[\'HTTP_X_REQUESTED_WITH\']== \'MDXMLHttpRequest\' ):
        $pre = dirname( $template );
        $suf = basename( $template );
        $_template = $pre . \'/ajax-\' . $suf;
        if( !file_exists( $_template ) )
            $_template = $template;
        $template = $_template;
    endif;
    return $template;
}
 这将添加
ajax 作为模板名称的前缀,并加载它而不是常规名称。这个AJAX模板在内容上收缩,并使用JSON编写以进行数据操作。
由于我在插件文件夹中,从插件文件夹加载模板的解决方案如下(这是我找到的唯一解决方案,我不确定这是否是一种好的做法……)
function get_single_cpt_template($single_template) {
    global $post;
    if ($post->post_type == \'project\') {
        $single_template = dirname( __FILE__ ) . \'/templates/single-project.php\';
    }
    return $single_template;
}
 或者对于特定于ajax的单篇文章模板:
function get_ajax_single_cpt_template($ajax_single_template) {
    global $post;
    if ($post->post_type == \'project\') {
        $ajax_single_template = dirname( __FILE__ ) . \'/templates/ajax-single-project.php\';
    }
    return $ajax_single_template;
}
 所有这些都很好!!没有问题,非常顺利,JS证明(如果JS被禁用)和SEO友好。。。它允许所有的网站在没有AJAX的情况下仍然工作,并且基于历史API,没有历史API,AJAX被禁用,导航是一种很好的方式。
问题是我找不到有关索引的解决方案。php文件。无论如何,它都不想使用AJAX加载它。。。当我点击我的网站徽标/标题时,它应该加载ajax-index.php但它似乎不起作用。。
我做了与其他模板完全相同的过程。。。除以下情况外:
function get_ajax_index_template($ajax_index_template) {
        global $post;
        if (is_home_page()) {
            $ajax_index_template = dirname( __FILE__ ) . \'/templates/ajax-index.php\';
        }
        return $ajax_index_template;
    }
 有什么想法吗?我想是我忘记了Wordpress中的模板层次结构吧?感谢您的时间和帮助。
UPDATE
它正在加载完整索引。php模板:如果我在Firebug中查看网络请求,会有一个“帖子”,但返回的是索引。php而非ajax索引。php。。。因此,JS崩溃是因为代码不是它应该是的。。。