Wordpress Page ID not Post ID

2019-07-21 21:05发布

Is there any way to get ID of the current page which shows posts in loop? I need to get this ID in header.php.

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

标签: php wordpress
2条回答
霸刀☆藐视天下
2楼-- · 2019-07-21 21:13

It depends on where you want to get this ID. If you are trying to get it on the page that you have set to show posts (ie, a page set as your "blog"), you need to use:

$page_id = get_option( 'page_for_posts' );

If you want to get this on any other page and you're using a custom query, you can get this (before your custom loop) using:

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

Because you're using WP_Query and the_post(), you'll want to reset the post data after your custom loop with wp_reset_postdata(); to use template tags again. I suspect that's where your problem is - you're hijacking the template tags with your custom loop and not resetting them.

查看更多
唯我独甜
3楼-- · 2019-07-21 21:33

The get_the_ID() method is probably what you need:

 <?php get_the_ID(); ?> 

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

查看更多
登录 后发表回答