如何更改WordPress单个帖子URL的默认行为?

时间:2012-10-20 21:05:49

标签: ajax wordpress .htaccess

我正在试图找出一种方法来改变wordpress单个帖子的行为,这样我就可以通过ajax将帖子内容加载到index.php页面而不是使用single.php文件加载页面。 。该网站是一个wordpress网站,但使用ajax将所有内容加载到一个页面。基本上,正在读取的实际php文件永远不会更改,而是在用户单击新页面时,页面内容将通过ajax请求加载。

我有没有办法编辑我的.htaccess文件,以便当有人访问www.mysite.com/blog/post-name时,它会加载index.php并告诉脚本将所请求的帖子内容加载到通过ajax的index.php页面?

谢谢!

1 个答案:

答案 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);
        });
    });
});