Javascript 如何使用ajax加载wordpress帖子的内容
我正在使用ajax在wordpress中加载一篇新文章。以下是基本代码:Javascript 如何使用ajax加载wordpress帖子的内容,javascript,ajax,wordpress,Javascript,Ajax,Wordpress,我正在使用ajax在wordpress中加载一篇新文章。以下是基本代码: function test(){ var menuitem = document.getElementsByTagName('nav')[0].childNodes; for(var i= 0; i < menuitem.length; i++) { bindEvt(menuitem[i], "click", loadajax); } }; function loada
function test(){
var menuitem = document.getElementsByTagName('nav')[0].childNodes;
for(var i= 0; i < menuitem.length; i++)
{
bindEvt(menuitem[i], "click", loadajax);
}
};
function loadajax (event) {
event.preventDefault();
xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
var content = document.getElementsByTagName('article')[0];
if(xhr.readyState == 4){
if(xhr.status == 200) {
content.innerHTML = xhr.responseText;
} else{
content.innerHTML = 'Cannot connect to server. Check your internet connection'}
}
};
xhr.open('GET', this.href, true);
xhr.send();
}
bindEvt(window, "load", test);
功能测试(){
var menuitem=document.getElementsByTagName('nav')[0].childNodes;
对于(变量i=0;i
它工作良好,只是它加载了整个新的职位与菜单,页眉,页脚等。。。
我只需要内容和评论。是否有任何方法可以使用ajax专门要求wordpress提供这些内容,或者只有这样才能获取整个页面,然后从中提取我需要的内容并重新发布
也许可以为它制作一个特定的模板页面?但我如何才能让它工作呢
我希望我已经说清楚了。如果没有请告诉我!第一次尝试Wordpress主题/PHP
谢谢你的帮助 您可以使用模板,但您需要自己编写模板,这样会有点麻烦。Andrew M.关于jQuery解决方案的评论是正确的,你也是:你仍然可以下载整个文档,但是你只能很容易地插入你想要的部分。有关更多详细信息,请参见加载页面片段一节,但为了方便起见:
$('#result').load('ajax/test.html #container');
将加载test.html并将该文档的#container
元素的内容插入父页面上的#result
元素。容易极了
当然,这将导致与完全呈现源页面一样多的服务器负载和带宽成本,但幸运的是,只有当图像等是呈现部分的一部分时,才会加载它们。但是,除非您有大量的流量,否则这种开销不应该是任何需要担心的
假设您希望服务器首先发送您需要的数据:您将如何进行这项工作取决于您对WordPress实例的其他需求
如果您只需要加载一个页面,并且没有人直接查看原始页面,那么很简单-编写一个只包含以下内容的模板:
while ( have_posts() ) : the_post();
echo '<h2>';
the_title();
echo '</h2>';
the_content();
endwhile;
while(have_posts()):the_post();
回声';
_title();
回声';
_内容();
结束时;
并为相关帖子设置模板
但是,如果您还需要人们查看源页面上的帖子,那么您必须使用上述singles模板创建一个主题,并安装一个主题切换器插件,并传递必要的mojo以在AJAX请求中调用机器可读的主题。这有点复杂。你可以使用一个模板,但你需要自己编写,这样会有点麻烦。Andrew M.关于jQuery解决方案的评论是正确的,你也是:你仍然可以下载整个文档,但是你只能很容易地插入你想要的部分。有关更多详细信息,请参见加载页面片段一节,但为了方便起见:
$('#result').load('ajax/test.html #container');
将加载test.html并将该文档的#container
元素的内容插入父页面上的#result
元素。容易极了
当然,这将导致与完全呈现源页面一样多的服务器负载和带宽成本,但幸运的是,只有当图像等是呈现部分的一部分时,才会加载它们。但是,除非您有大量的流量,否则这种开销不应该是任何需要担心的
假设您希望服务器首先发送您需要的数据:您将如何进行这项工作取决于您对WordPress实例的其他需求
如果您只需要加载一个页面,并且没有人直接查看原始页面,那么很简单-编写一个只包含以下内容的模板:
while ( have_posts() ) : the_post();
echo '<h2>';
the_title();
echo '</h2>';
the_content();
endwhile;
while(have_posts()):the_post();
回声';
_title();
回声';
_内容();
结束时;
并为相关帖子设置模板
但是,如果您还需要人们查看源页面上的帖子,那么您必须使用上述singles模板创建一个主题,并安装一个主题切换器插件,并传递必要的mojo以在AJAX请求中调用机器可读的主题。这有点复杂。所以,我来这里寻找一个类似于OP[cmplieger]提出的解决方案 我以前使用过sudowned描述的方法。我做了一个像这样的WordPress主题。页面使用页眉检测,可以选择加载页眉,然后加载内容,也可以选择页脚。
这是一个伟大的主题,加载速度极快。这真的是最好的方法 然而 不过我觉得有一个只在浏览器端工作的东西会很棒,所以这篇文章激发了我写这篇文章的灵感: 注意:我不会这样做。 我真的建议采用Sudowne上面建议的方式。 但是,在某些情况下,你可能没有其他办法 苏呜
/* requires jQuery */
// some assumptions:
// you are using jQuery
// the pages you are calling are inside
// the same domain as the page calling them.
//
HTML的切片
- 第1页
- 第2页
CSS的一个亮点:
#列表ul{list-