在Wordpress循环之外获取发布信息

时间:2009-09-07 23:27:35

标签: php html wordpress blogs

我知道有一些函数可以让is_single()返回有关页面的数据,但我正在寻找一种在循环之外获取以下信息的方法:

单个帖子的类别。

单个帖子的标题。

所有我真正需要的是有问题的帖子ID,我可以获得所有其他信息。我查看了codex中的函数引用,但我没有找到任何东西。这是不可能的,因为脚本甚至没有获得那些信息,直到循环运行?

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

希望有人可以提供一些见解。

编辑:澄清:我希望信息来自“单一”页面循环中加载的帖子。 (他们正在查看的帖子。)那么我如何才能获得此ID?基本上,在查看帖子时,我希望获得其类别或标题,但不是在循环播放时。

7 个答案:

答案 0 :(得分: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">

答案 1 :(得分:3)

您可以执行自己的查询并返回$ post对象,然后通过

之类的内容访问它的属性
echo $post->title;

在Codex上阅读$ wpdb和Custom Queries。基本上,您可以使用ID作为通过其$ wpdb对象的where过滤器来运行SQL查询。

另一个类似WP的选项是使用Custom Query Post,您可以在其中定义另一个循环,仅使用其ID返回您的帖子:

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

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

答案 2 :(得分: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;

答案 3 :(得分:1)

查询运行后,尝试运行:

global $wp_query;
var_dump( $wp_query );

您要查找的信息可能在$wp_query->query_vars$wp_query->post

答案 4 :(得分:1)

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

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

然后,如果你需要知道第一篇帖子是否属于某个post_type,你可以这样做:

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

答案 5 :(得分:0)

你不能将$ post信息存储在页面上的单独变量中,然后在需要时(即在循环外)回显你需要的数据吗?

这是因为在初始循环运行后需要数据。

答案 6 :(得分:-2)

通常的做法是创建“第二个循环”,它将提取所需的帖子,因此你需要的数据。