0

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

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

谢谢!

4

1 回答 1

1

如果您已经在 index.php 文件中使用了 AJAX,那么: 一些想法。在您的服务器上,您可以删除 single.php 文件并创建指向 index.php 文件的符号链接:

对于 *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);
        });
    });
});
于 2012-10-20T21:16:25.557 回答