我正在试图找出一种方法来改变wordpress单个帖子的行为,这样我就可以通过ajax将帖子内容加载到index.php页面而不是使用single.php文件加载页面。 。该网站是一个wordpress网站,但使用ajax将所有内容加载到一个页面。基本上,正在读取的实际php文件永远不会更改,而是在用户单击新页面时,页面内容将通过ajax请求加载。
我有没有办法编辑我的.htaccess文件,以便当有人访问www.mysite.com/blog/post-name时,它会加载index.php并告诉脚本将所请求的帖子内容加载到通过ajax的index.php页面?
谢谢!
答案 0 :(得分:1)
如果您已经在index.php文件中使用了AJAX,那么: 几个想法。在您的服务器上,您可以删除single.php文件并为index.php文件创建符号链接:
for * nix(包括os x):
ln -s index.php single.php
或在single.php文件中,您可以删除所有内容并包含index.php:
<?php include('index.php'); ?>
控制是否通过AJAX加载需要在您的客户端上完成。
或者你还没有AJAX工作吗?如果没有,那么答案会稍微复杂一些。以下是我使用wordpress网站设置AJAX的方法:
在服务器上,我使用JSON API wordpress插件轻松地通过AJAX(JSON格式)提供内容。
在客户端上,您可以使用jQuery捕获任何指向wordpress的链接,并通过AJAX运行它们。我在这里复制一些代码,从一个不同的域中的服务器检索最近的帖子列表(所以我使用的是JSONP而不是直接的JSON)。您可以在JSON API文档中看到如何修改它以获得单个帖子。
jQuery(function($) {
$('a').click(function(event) {
$('body').css('cursor', 'wait');
event.preventDefault(); // this prevents the regular behavior of clicking a link
$.ajax({
type:'GET',
url:url,
async:false,
jsonpCallback:'jsonCallback',
contentType:"application/json",
data: {
json: 'get_recent_posts',
count: 10,
page: page + 1
},
dataType:'jsonp'
}).always(function(){
jQuery('body').css('cursor', 'auto');
}).done(function(json) {
$.each(json.posts, function(index, value) {
tags = [];
$.each(value.tags, function(index, value) {
tags.push('<a href="' + tag_url + value.slug + '">' + value.title + '</a>');
});
html =
'<div>' +
'<header class="entry-header">' +
value.title +
'<br>' +
value.date +
'</header>' +
'<div class="entry-content">' +
value.content +
'</div>' +
'</div>' +
'<span class="labels_label">'+
'Labels: ' +
'</span>' +
'<span class="labels">' +
tags.join(', ') +
'</span>' +
'<hr>';
$('.full-width .content').append(html);
});
});
});