2009-09-07 250 views
4

我知道有功能,喜欢is_single(),将返回有关页面数据,但是我正在寻找一种方式来获得环路以外的下列信息:获取信息后外WordPress的循环

单个帖子的类别。

AND

单个帖子的标题。

我真的需要的是发布的ID,我可以获得所有其他信息。我已经浏览了代码中的函数引用,但是我没有找到任何东西。这是不可能的,因为直到循环运行,脚本甚至不会获得该信息?

(我需要在页眉和页脚中的这些信息,所以之前并为循环PHP脚本之后,如果这是一个问题。)

希望有人能提供一些见解。

编辑:澄清:我希望信息来自加载在“单个”页面循环中的帖子。 (也就是他们正在查看的帖子。)那么我怎样才能得到这个ID呢?基本上,在查看帖子时,我想要获得它的类别或标题,但不能在循环进行时进行。

+0

我看到你在@ Yaraher回复的评论中留下了一个问题。请参阅下面的答案以获取解决方案。 – 2009-09-17 04:47:20

回答

3

您可以执行自己的查询,并返回一个$ post对象,然后访问它通过一些属性,如

echo $post->title; 

阅读WPDB $和Custom Queries的食品。基本上你可以运行一个SQL查询,通过它的$ wpdb对象使用ID作为where过滤器。

另一种选择,更可湿性粉剂状,将使用Custom Query Post,在那里你可以定义另一个循环,使用ID只返回你的信息:

query_posts('p=2010'); // 2010 being the post's ID 

然后,你可以运行的替代循环和使用类似的$ post对象来显示一些信息。

+0

好的,但我看到的问题是...我希望信息来自加载在“单个”页面循环中的帖子。 (也就是他们正在查看的帖子。)那么我怎样才能得到这个ID呢? 基本上,当查看帖子时,我想获取它的类别或标题,但不是在循环进行时。 – 2009-09-08 03:13:14

2

这是我在循环内部运行一个新的查询;我只是在循环之外尝试它,它在single.php模板页面上工作。这将给出mycategory最新帖子的标题。不过,我不知道如何提取类别ID。

$my_query = new WP_Query('category_name=mycategory&showposts=1'); 
while($my_query->have_posts()): 
    $my_query->the_post(); 
    the_title(); 
endwhile; 
+0

再次,问题是这是一个新的查询。我需要的是访问已在is_single页面上查询的帖子。但我需要它在该页面的循环之外。 – 2009-09-10 02:12:46

+0

循环已经运行,所以你需要查询或搜索完成页面的代码?我不知道目标是什么;我想我会重新思考为什么你需要这样做。 – markratledge 2009-09-10 14:30:07

1

查询运行后,尝试运行:

global $wp_query; 
var_dump($wp_query); 

你正在寻找的信息可能是在$wp_query->query_vars$wp_query->post

-2

通常就是要打造“第二循环”,这将提取需要的文章,因此您需要的数据。

5

这其实很简单。

// Gets an array of post objects. 
// If this is the single post page (single.php template), this should be an 
// array of length 1. 
$posts = get_posts(); 
// The post object contains most/all of the data that is accessible through the 
// normal functions like `the_ID()`, `the_author()`, etc 
var_dump($posts[0]->ID); 

这可以在外部执行,它不会影响正常循环。例如,我的single.php模板看起来像这样(行号包括):

1. <?php 
2. get_header(); 
3. $posts = get_posts(); 
4. var_dump($posts[0]->ID); 
5. ?> 
6. <div id="post"> 
0

你不能存储$职位信息页面上一个独立的变量,那么就呼应了数据以后,当你需要出去需要它(即,在循环之外)?

这是基于在初始循环运行后需要数据。

1

您可以使用$ wp_query全局对象,并解决所有返回的帖子这样

$wp_query->posts ; // contains an array of posts. 

然后,举例来说如果你需要知道,如果第一个职位是一定post_type的,你可以这样做:

$first_post_type = $wp_query->posts[0]->post_type;