2016-01-17 30 views
0

我有一個表單收集產品上的數據,然後將數據放入wp_posts表和wp_postmeta表中。我可以在ID的基礎上創建一個永久鏈接,如果我接着對此永久鏈接進行wp_redirect,則WordPress應嘗試顯示該頁面。在沒有循環的模板中獲取頁面ID

該頁面的模板名爲listing.php,它沒有Loop。它的唯一目的是通過將wp_posts表和wp_postmeta表中的數據放入不同的div來顯示這些產品頁面。但我想知道該模板如何獲得正在構建的頁面的ID,以便它可以訪問wp_posts表和wp_postmeta表。我想做一些類似$meta = get_post_meta(get_the_ID())的事情,但codex說你只能在Loop中使用get_the_ID(),我沒有其中之一。那麼我應該怎麼做呢?

謝謝

回答

1

獲取當前頁面的頁面ID的最健全和最可靠的方法是使用查詢對象。這兩個功能get_queried_object()get_queried_object_id()將保持當前頁面(的類別,標籤,分類和作者的網頁也將保持當前類別,標籤項和作者信息分別)的信息

讓頁面ID ,只需使用

$page_id = get_queried_object_id(); 
echo $page_id; 
+0

所有這三種方法都在我的模板中爲我獲取ID,沒有Loop。我懷疑他們希望你把它放在Loop中,這樣你就可以得到Loop正在處理的當前帖子的ID。對我來說,我可以把它放在任何地方,因爲模板只處理一個頁面。 – Steve

0

您可以從全局$ post變量中獲取帖子ID。

global $ post; echo $ post-> ID;

+0

該codex表示「$ post包含來自The Loop中當前帖子的數據」。當我沒有Loop時它會有效嗎? – Steve

+0

我可能是錯的,但我認爲$ post全局數據是在頁面模板被加載之前設置的,所以它應該有所有的發佈信息,即使沒有循環。 –

相關問題