2014-10-19 91 views
2

有什麼辦法可以獲得顯示帖子在循環中的當前頁面的ID?我需要在header.php中獲得這個ID。WordPress的頁面ID不是發佈ID

<?php 
    $query = new WP_Query(array('post_type' => 'portfolio')); 
    while ($query->have_posts()) : 
      $query->the_post(); 
?>       
//here I added posts 
<?php endwhile; ?> 

回答

1

這要看你想上哪兒得到這個ID。如果你想獲得它,你已經設置爲顯示帖子在頁面上(即設置爲頁面的「博客」),你需要使用:

$page_id = get_option('page_for_posts'); 

如果你想要得到這個任意其他頁面,您使用的是自定義查詢,您可以用得到這個(自定義循環前):

global $post; 
$page_id = $post->ID; 

因爲你使用WP_Query和the_post(),你會想以後的POST數據重置自定義循環與wp_reset_postdata();再次使用模板標籤。我懷疑這是你的問題所在 - 你用自定義循環劫持模板標籤,而不是重置它們。

+0

這是我想要實現的,但是如果我重置查詢並使用全局變量,則只會獲取第一個帖子的ID,而不會獲得頁面的ID這篇文章。 – bojo 2014-10-19 20:42:48

+0

你能發表更多你的代碼嗎?如果您在標準頁面上並在任何自定義查詢之前請求全局$ post變量,您將獲得頁面標識。 ($ post-> ID是在這種情況下的頁面ID) – 2014-10-19 23:54:24

+0

我意識到,如果我使用默認的永久鏈接運行你的代碼,它完美的工作。但是如何實現使用結構/ localhost/web /%postname%/的自定義永久鏈接? – bojo 2014-10-20 07:15:57

0

的get_the_ID()方法可能是你需要的東西:

<?php get_the_ID(); ?> 

http://codex.wordpress.org/Function_Reference/get_the_ID

+0

如果我使用<?php get_the_ID(); ?>在循環之外,無論是之前還是之後,我都會得到最後一篇文章的ID,而不是帖子所在頁面的ID。 – bojo 2014-10-19 12:59:56

+0

爲什麼在循環之外使用它? – user319940 2014-10-19 13:00:47

+0

每個頁面都有一個顏色自定義字段,頁面的顏色取決於此值。所以我不想得到我在這個頁面上顯示的帖子的ID,但是顯示帖子的頁面的ID。 – bojo 2014-10-19 13:06:18