用AJAX/PJAX加载部分模板

时间:2015-07-23 作者:Mr_Chimp

我正在尝试使用加载内容PJAX (基本上是有历史的AJAX)。到目前为止,我已成功捕获PJAX请求并加载正确的内容。

我的问题是找到用于每个页面的正确模板。目前我正在使用。。。

$post_type = get_post_type();
locate_template($post_type.\'.php\', true);
这种方法可行,但并不完美。例如,它永远不会击中front-page.php. 有没有“正确”的方法可以做到这一点?我错过了什么?

1 个回复
最合适的回答,由SO网友:forsvunnet 整理而成

如果您担心性能,我建议您使用WordPress API 而不是尝试使用ajax加载标记。

如果你看wp-includes/template-loader.php 您可以看到WordPress本身是如何确定要使用哪个模板的。理论上,您可以直接加载该文件,但可能会遇到以下问题template_redirect.

require_once( ABSPATH . WPINC . \'/template-loader.php\' );
或者,您可以复制粘贴所需的代码。

$template = false;
if     ( is_embed()          && $template = get_embed_template()          ) :
elseif ( is_404()            && $template = get_404_template()            ) :
elseif ( is_search()         && $template = get_search_template()         ) :
elseif ( is_front_page()     && $template = get_front_page_template()     ) :
elseif ( is_home()           && $template = get_home_template()           ) :
elseif ( is_post_type_archive() && $template = get_post_type_archive_template() ) :
elseif ( is_tax()            && $template = get_taxonomy_template()       ) :
elseif ( is_attachment()     && $template = get_attachment_template()     ) :
  remove_filter(\'the_content\', \'prepend_attachment\');
elseif ( is_single()         && $template = get_single_template()         ) :
elseif ( is_page()           && $template = get_page_template()           ) :
elseif ( is_singular()       && $template = get_singular_template()       ) :
elseif ( is_category()       && $template = get_category_template()       ) :
elseif ( is_tag()            && $template = get_tag_template()            ) :
elseif ( is_author()         && $template = get_author_template()         ) :
elseif ( is_date()           && $template = get_date_template()           ) :
elseif ( is_archive()        && $template = get_archive_template()        ) :
else :
  $template = get_index_template();
endif;
/**
 * Filters the path of the current template before including it.
 *
 * @since 3.0.0
 *
 * @param string $template The path of the template to include.
 */
if ( $template = apply_filters( \'template_include\', $template ) ) {
  include( $template );
}

结束

相关推荐

Custom Post Templates

The Issue: 我正在寻找定制的单篇文章模板,以添加或删除单个元素作为普通单篇文章的功能。有很多方法可以在WordPress中为单个帖子创建自定义帖子模板。尤其是post格式是使用默认模板处理默认情况的绝佳机会;然而,我需要真正的自定义模板。The Idea: 我的第一种方法是根据post ID添加if/else语句:// check if custom post if ( is_single(\'999\') ) // check if there is a custom