2012-05-25 100 views
0

進一步的問題有關Ajax permalink in wordpress Pluto Theme將URL重定向到Ajax版本的最佳解決方案?

所以這是一個完全的Ajax WordPress的主題,出現在谷歌的所有URL都沒有從用戶版網站,但它的「下面」的版本。

例子: 鏈接出現在谷歌:www.thaiorchid.be/menus/(詭異的黑色頁)相比使用者網頁:www.thaiorchid.be/#menu-item-21

我尋找最好的方式來自動重定向所有的頁面(比如一個/菜單到一個/#menu-item-21)至少有一些可呈現的東西,任何想法什麼是最好的解決方案?

+0

有兩個問題:1.您是否有權訪問模板文件,該文件用於呈現爲AJAX請求呈現的局部視圖? 2.例如, 'menu-item-21' - 是21帖子/頁面的ID嗎? – polarblau

+0

對於1.是的,我可以訪問所有內容。和2.悲傷不(菜單帖子是11號(與Ajax網址:#menu-item-21))。謝謝 – JonathanS

回答

0

不幸的是我目前無法測試以下內容,但我相信這樣的事情應該能夠工作,因爲在這個主題中使用了標準的Wordpress菜單。

// functions.php 
function get_menu_id_for_post($post_id) { 
    global $wpdb; 
    $query = $wpdb->prepare(
    " 
     SELECT post_id 
     FROM $wpdb->postmeta 
     WHERE meta_key = '_menu_item_object_id' 
     AND meta_value = %s 
    ", 
    $post_id 
); 
    $menu_id = $wpdb->get_var($query); 
    return $menu_id; 
} 

function is_ajax_request() { 
    return (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && 
      strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'); 
} 

// partial template, right on the top: 
<?php if (!is_ajax_request()): ?> 
    <script type="text/javascript"> 
    window.location = "http://www.thaiorchid.be/#menu-item-<?php echo get_menu_id_for_post($post->ID) ?>"; 
    </script> 
<?php endif; ?> 

這將決定基於當前崗位的或頁面的ID正確的菜單ID,然後如果當前頁面不被通過AJAX加載重定向使用Javascript。

再一次,我現在無法測試它,但它可以幫助你繼續下去。

+0

嘿@polarblau再次感謝,看起來像一個偉大的解決方案!我試了一下,但仍然有相同的結果...將嘗試更多。 – JonathanS

+0

你現在在模板中有沒有第二個位?你能發佈一個例子的鏈接嗎? – polarblau

+0

再次感謝您的幫助,我編輯了該頁面。PHP文件,並添加了代碼的第二部分,但我把它取消了,因爲沒有頁面打開了......但這也寫在page.php代碼的頂部,並可能有所幫助? /** * \t獲取當前頁面對象 **/ $ page = get_page($ post-> ID); /** * \t獲取當前頁面ID **/ $ current_page_id =''; if(isset($ page-> ID)) { $ current_page_id = $ page-> ID; } – JonathanS

0

爲了向下兼容寫在一個正確的方式聯繫,但添加的關係/類什麼都你覺得舒服:

<a href="http://example.com/path/to/file.html" rel="ajax" >link</a> 
從jQuery的

然後:

$('a[rel=ajax]').click(function(e) { 
    //do whatever 
    e.preventDefault(); 
}); 

在某些情況下,我我已經跳過了添加rel =「ajax」class =「ajax」只是尋找指向我的網站域名的鏈接:

$('a[href^="http://example.com"]').click(function(e) { 
    //do whatever 
    e.preventDefault(); 
}); 

通常我的做任何方法做了一個ajax獲取請求到最初的鏈接地址相同的地址。它只是添加了一個參數?ajax = 1,所以模板可以跳過輸出頁眉/頁腳(當我使用AHAH)或json_encode響應(對於JSON輸出)。

+0

謝謝@Mihai,但鏈接不是由我寫的,而是從wordpress自動生成的(這些是來自頁面或帖子的鏈接)有沒有辦法將_rel =「ajax」_插入這些鏈接? – JonathanS

+0

你的意思是這樣的:**在某些情況下,我已經跳過添加rel =「ajax」或class =「ajax」,只是尋找指向我的網站**的域名的鏈接? –

+0

$('a [href^=「http:// example.com」]')只選擇一個以**「http:// example.com」開頭的具有href屬性**的標籤。你不需要rel =「ajax」或class =「ajax」。 –