Get post/page title from ID

时间:2014-07-17 作者:lolo

我试图在循环之外的管理面板中获取post\\u类型(post/page/portfolio)的帖子标题。

我几乎尝试了所有可能的解决方案,但没有成功:

//method 1
$content_post = get_post(3208);
$_menu_item_title = $content_post->post_title; //(Trying to get property of non-object error)

//method 2
$obj = get_post_type_object($_menu_item_type);
$content_post = get_post(3208);  //(Trying to get property of non-object error)
$_menu_item_title = $obj->$content_post->post_title;

//method 3
$_menu_item_title = the_title(3208); //(no error but nothing is store)

//method 4
$_menu_item_title = get_the_title(3208); //(no error but nothing is store)

4 个回复
SO网友:Krzysiek Dróżdż

如果您只有一个帖子的ID,并且只需要该帖子的标题,那么使用get_post_field 我想这是最好的办法。

此函数的语法:

get_post_field( $field, $post_id, $context );
因此,解决问题的代码如下所示:

$title = get_post_field( \'post_title\', $POST_ID );
// most probably you want to display the title, so you can ignore last param
并寻址您的代码片段。。。如果帖子存在并且已经发布,或者当前用户可以看到,第一种方法应该可以工作。

第二种方法不起作用。这毫无意义。

第三种和第四种方法也不起作用。这些函数不将post\\u ID作为参数,因此这样使用它们没有多大意义。。。

SO网友:stoopkid1

正如已经指出的,“非对象错误”意味着get\\u post()没有返回任何内容,并且post不存在。

不过,如果你确信这篇文章确实存在,那么这里有一种替代方法from the codex

<?php
    $post_7 = get_post(7, ARRAY_A);
    $title = $post_7[\'post_title\'];
?> 
如果仍然没有返回任何内容,您确定此帖子已发布,并且未处于草稿状态吗?

SO网友:maverick

我确实通过以下过程获得了这篇文章的相关标题。首先:我从仪表板获取帖子Id信息[将鼠标悬停在帖子上方,并在仪表板的左下方观察(您将在那里获得Id信息)]

第二:我使用的wordpress循环内部:

<?php if(have_posts()): while(have_posts()) : $var_name= get_the_ID(); ?>
<?php if($var_name == post-id-value): get_the_title(); ?>
<?php endwhile; endif; ?>
这里的post id value是一个整数值,它是您的post的id。您可以将get\\u the\\u title()值存储在一个变量和echo函数中,以便在所需的位置回显该值。注意*您需要在wordpress仪表板中至少有一篇帖子。否则,您可能会得到意外的结果(浏览器甚至计算机可能会崩溃)

SO网友:jigar041

使用此默认WP方法,您可以获取当前页面和当前帖子的标题。

<?php 
echo get_the_title();

结束

相关推荐