我使用简单的ajax方法在wordpress网站中加载内容:我点击导航链接点击并将GET参数添加到网址:
jQuery('#topnav a').click(function(e){
e.preventDefault();
url = jQuery(this).attr('href');
jQuery.ajax({
type: 'GET',
url: url,
data: 'naked=1', // my parameter
dataType: 'html',
success: function(data){
jQuery('#content').html(data); // load new content
});
}
});
});
在wordpress的模板中检查此参数后,如果此参数存在,则不包括页眉和页脚并加载裸内容:
<?php
/**
* page.php
* @package WordPress
* @subpackage clean
*/
if (!isset($_GET['naked'])) get_header(); // if parameter exist do not load header ?>
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); // cycle wp start ?>
<h1><?php the_title(); ?></h1>
<?php the_content(); ?>
<?php endwhile; // cycle wp end
if (!isset($_GET['naked'])) get_footer(); // if parameter exist do not load footer ?>
此方法运行正常,但如果页面包含contactform7短代码,则ajax提交表单不起作用,因为footer.php不包含表单的js人员。
我试图把wp_footer()函数放到page.php中,但函数没有为表单添加js脚本!如果我也把wp_head()放在page.php中 - wp_footer()工作正常。
请任何想法。
答案 0 :(得分:2)
如果查看line 200 of wp-includes/default-filters.php,您会注意到脚本已加入wp_head
。
这就是您的脚本无法运行的原因。 wp_head()
是Contact Form 7正常运行的关键功能。您仍需要包含wp_head()
,但不要包含wp_header()
以便实现此目的。例如,以下内容应该保留&#34; naked&#34;,但仍然允许加载脚本:
if ( !isset($_GET['naked']) ) {
get_header(); // if parameter exist do not load header
} else {
wp_head(); // still include wp_head(), but without the rest of the "header"
}
确保wp_head()
仍然在您的文档<head></head>
部分中运行。