使用AJAX将WordPress后期内容加载到DIV中

我几天前发布了一个关于如何在我正在开发的自定义Wordpress模板中滚动到单个post的问题 。 我在坚果壳中需要的是在单击特定链接时将单个post加载到定义的DIV中,然后向下滚动到保存新加载内容的DIV。 考虑到Wordpress或任何其他CMS的动态内容特性,该链接的URL不能是绝对的。

不幸的是,在那个时间点没有任何具体的答案,所以我决定窥探一下。 由于主要问题是动态加载内容,我决定放大我如何在Wordpress上使用AJAX来实现它:

到目前为止,我已经从Emanuele Feronato的一篇精彩post( 用Ajax和jQuery加载WordPresspost )中得到了一个小小的想法。 他基本上将postID存储在可点击链接的rel属性中,然后调用它。 好吧,还有一些其他步骤可以使这项工作,但我现在只提到postID的原因是因为它似乎是方程式中唯一不正确的部分; 邮件ID加载到链接的rel属性中,但无法加载到.load函数中。

只是为了让你更好地了解我到目前为止在我的标记中得到了什么:

HEADER.PHP中的AJAX / JQUERY

$(document).ready(function(){ $.ajaxSetup({cache:false}); $(".trick").click(function(){ var post_id = $(this).attr("rel"); $("#single-home-container").html("loading..."); $("#single-home-container").load("http:///single-home/",{id:post_id}); return false; }); }); 

的index.php

   
<img class="home-bg" src="https://stackoverflow.com/questions/7526113/load-wordpress-post-content-into-div-using-ajax//images/home-bg.jpg" /> <a class="trick" rel="" href=""> <div class="box element col" id="cat_name; ?>">

SINGLE-HOME.PHP(这是一个定制的模板)

    <div id="single-home post-">  
cat_name; ?> -

仅供记录:当postID无法加载时,我尝试安装Emanuele Feronato演示中使用的特定Kubrick主题,并根据他的指南做了必要的更改,但没有任何效果。

有没有人知道发生了什么,或者是否有其他方法可以将postID动态加载到.load函数中?

好吧,幸运的是,一些咖啡加香烟,我设法解决了这个问题:

这是我做的:

1.测试是否在rel属性中捕获了postID并在post_id变量中正确加载

我在AJAX / JQUERY片段中插入了一个警报回调,以查看postID是否甚至加载到post_id变量中。 这是它的样子:

 $(document).ready(function(){ $.ajaxSetup({cache:false}); $(".trick").click(function(){ var post_id = $(this).attr("rel"); alert(post_id); $("#single-home-container").html("loading..."); $("#single-home-container").load("http:///single-home/",{id:post_id}); return false; }); }); 

因此,当我点击链接时,回拨给出了与post相关联的准确postID。 这有点将问题隔离到.load()函数中定义的URL。 似乎postID不足以将post加载到定义的DIV中。

2.将链接的rel属性从postID更改为发布永久链接

我决定,由于postID显然不起作用,我会在链接的rel属性中使用post的永久链接标记。 这就是它的rel之前的样子:

  

这就是现在的样子:

  

3.编辑.load()函数URL /值

从那里开始,我不得不对AJAX / JQUERY片段进行更改,以便它不再使用postID:

 $(document).ready(function(){ $.ajaxSetup({cache:false}); $(".trick").click(function(){ var post_link = $(this).attr("rel"); $("#single-home-container").html("loading..."); $("#single-home-container").load(post_link); return false; }); }); 

从上面的内容可以看出,我已经获取了链接的rel属性值(现在是post的永久链接)并将其抛入post_link变量。 这使我能够简单地将该变量放入.load()函数中,替换为http:///single-home/",{id:post_id} http:///single-home/",{id:post_id}显然不起作用。

瞧! 问题解决了。

虽然我还没有对此进行测试,但我相信在这种情况下使用固定链接实际上不需要按照Emanuele Feronato在其post中的指示更改Wordpress中的永久链接结构。

因此,如果任何人有意图将Wordpresspost动态加载到已定义的DIV中,您可以试试这个!

而不是使用:

 var post_id = $(this).attr("rel"); 

你应该直接获取href。 他们都是一样的。

 var post_id = $(this).attr("href"); 

这有助于做两件事:

  1. HTML中的标记较少
  2. 您远离使用rel作为数据属性,这对于HTML5来说不是一个非常明智的选择。 ( 在这里阅读 )
Interesting Posts