我知道有一些函数可以让is_single()返回有关页面的数据,但我正在寻找一种在循环之外获取以下信息的方法:
单个帖子的类别。
和
单个帖子的标题。
所有我真正需要的是有问题的帖子ID,我可以获得所有其他信息。我查看了codex中的函数引用,但我没有找到任何东西。这是不可能的,因为脚本甚至没有获得那些信息,直到循环运行?
(我会在页眉和页脚中都需要这些信息,因此在循环的PHP脚本之前和之后,如果这是一个问题。)
希望有人可以提供一些见解。
编辑:澄清:我希望信息来自“单一”页面循环中加载的帖子。 (他们正在查看的帖子。)那么我如何才能获得此ID?基本上,在查看帖子时,我希望获得其类别或标题,但不是在循环播放时。
答案 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)
通常的做法是创建“第二个循环”,它将提取所需的帖子,因此你需要的数据。