2012-10-20 137 views
0

我試圖找出一種方法來改變wordpress的單個帖子url的行爲,以便不使用single.php文件加載頁面,而是可以通過ajax將帖子內容加載到index.php頁面。該網站是一個WordPress站點,但使用ajax將所有內容加載到一個頁面中。實質上,讀取的實際php文件不會改變,而當用戶點擊新頁面時,頁面內容通過ajax請求加載。如何更改我的WordPress單一網址的默認行爲?

有什麼辦法可以編輯我的.htaccess文件,這樣當有人去www.mysite.com/blog/post-name時,它會加載index.php並告訴腳本加載請求的帖子內容通過ajax進入index.php頁面?

謝謝!

回答

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); 
     }); 
    }); 
}); 
+0

這不是一個壞主意!一旦我這樣做了,我怎麼會然後處理該網址,以找出哪些帖子加載到index.php文件? – Hendeca

+0

我現在在打字了!從我剛剛做到這一點的網站複製一些代碼。等待幾分鐘... – manishie

+0

嗯,我想我可能已經找到了一個解決方案,使用我的現有代碼更好一點,通過使用mod_rewrite將網址轉換爲索引頁網址,並獲取由變量處理的網址PHP在索引頁面中,我將在嘗試後將它作爲答案發布。你也可以解釋一下上面的代碼實際上是如何通過url進行解析才能做出正確的ajax請求的? – Hendeca