Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用ajax加载wordpress帖子的内容_Javascript_Ajax_Wordpress - Fatal编程技术网

Javascript 如何使用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

我正在使用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 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-