2015-12-03 45 views
0

我一直在Google上搜索和嘗試不同的事情,在這一點上,我會直接問。基於上一頁的變量在wordpress上生成一個頁面

首先注意的是,這是所有在WordPress的,這似乎使一切都變得更加困難。

我想要做的是點擊一個鏈接指引我到一個單獨的頁面。但是,該鏈接將具有一個特定的ID,具體取決於您所點擊的ID。因此,所有鏈接將在技術上將您帶到相同的頁面,但在頁面加載時,它將使用鏈接中的ID在頁面上生成數據。

我的所有數據都是基於各種端點的JSON,我在js文件中生成頁面數據並將其插入到div中。

原始頁面上的數據在生成像循環:

for (var i = 0; i < data.length; i++) { 
    var trow = '<tr>'; 
    trow += '<td><a href="?id=' + data[i].itemID + '">' + data[i].info1 + '</a></td>'; 
    trow += '<td>' + data[i].info2 + '</td>'; 
    trow += '<td>' + data[i].info3 + '</td>'; 
    trow += '</tr>'; 
    table += trow; 
} 

因此,新的頁面上我會生成它沒有一個僅使用數據環[無論ID爲] 。

2個似乎解決我的問題跟兩個:

- 我不知道如何通過頁面的JavaScript發送變量除了href網址的事情,但後來不知道如何使用變量, javascript

- 如果我能夠用PHP發送它(我也不能),我不能將PHP變量變成一個javascript變量。

如果有什麼不清楚的,請告訴我,我會盡快更新。感謝大家的幫助。

回答

0

我在另一個問題中發現了這個問題。它能夠完成我所需要的。對不起,如果我沒有明確表示這會奏效。沒有太多的wordpress知識,我無法測試其他人給出的答案,但他們可能工作得很好,而且工作得更好。

var getUrlParameter = function getUrlParameter(sParam) { 
var sPageURL = decodeURIComponent(window.location.search.substring(1)), 
sURLVariables = sPageURL.split('&'), 
sParameterName, 
i; 

for (i = 0; i < sURLVariables.length; i++) { 
    sParameterName = sURLVariables[i].split('='); 

    if (sParameterName[0] === sParam) { 
     return sParameterName[1] === undefined ? true : sParameterName[1]; 
    } 
    } 
} 

var playerId = getUrlParameter('pid'); 
0

首先,你需要添加一個重寫,所以你可以拿起你通過添加以下到你的主題的的functions.php文件做請求 - :

add_action('init', 'my_rewrites'); 
function my_rewrites(){ 
    add_rewrite_rule(
      '^your-slug/([^/]*)/?', 
      'index.php?your-slug-data-id=$matches[1]', 
      'top' 
    ); 
} 

然後,創建一個新的將利用這些數據的模板文件。您需要添加一個鉤子,這樣當你重寫運行它拉在正確的模板文件,像這樣:

add_action('pre_get_posts', 'show_your_new_page', 1); 
function show_your_new_page($wp_query) { 
    if (! is_admin() && $wp_query->is_main_query() && isset($wp_query->query['your-slug-data-id'])) { 
     include(TEMPLATEPATH . '-child/your-new-template.php'); 
     exit(); 
    } 
} 

現在,在新的模板文件(你 - 新的template.php)你可以得到你通過使用get_query_var('your-slug-data-id')

一旦你得到了你的新頁面設置通過ID,你可以簡單地改變你的表的href去: <a href="/your-slug/' + data[i].itemID + '/">

+0

我打算先嚐試一下這個方法,但是我對於什麼是佔位符和什麼是代碼有幾個問題。在第一個代碼塊中,「index.php」實際上是引用該代碼還是隻是您示例中的佔位符?同樣,在第二個塊中,是否將「TEMPLATEPATH」保留爲這樣,還是應該將完整路徑置於模板的位置? –

+0

index.php和TEMPLATEPATH都應該保持原樣。您應該(可選)更改的項目是:'''show_your_new_page''','''your-new-template.php'',''''my_rewrites''',''''slug''',和'''你的slug-data-id''' –

+0

另外請注意,一旦你添加這個重寫,你將需要刷新wordpress重寫,以便它註冊這個。 –

0

您可以發送和檢索與PHP

http://myurlplace.com?id=123 

Then retrieve it within say the header like: 

$myVarId = $_GET['id']; 

Then in your javascript 

var myId = '<?=$myVarId?>'; 

我會強調這是一個簡單的修復,它完全取決於您的需求,但這將工作。

+0

我知道這只是一個例子,但我會認真的避免短標籤。 :\ –

0

根據數據來自何處,您可以做幾件事情。

此數據來自數據庫還是來自其他外部來源?

+0

數據來自數據庫,但就我對api端點的理解而言,我並不直接從數據庫調用 –

+0

您是從瀏覽器(javascript)還是從服務器(php)請求數據? – Ferrante

相關問題