有几种方法可以做到这一点,但我认为,一般来说,首选的方法是获取post_title
属性。这并不取决于删除某个函数的所有过滤器,然后再将其添加回来,后者要求您直接访问全局$wp_filter
.
get_post
检索post ID的post对象,post对象在构造时使用数据库中的字段填充所有post字段,而不应用任何筛选。
因此,您的代码只需
$title = get_post( $post_id )->post_title;
如果ID为的帖子
$post_id
不保证存在,请确保检查
get_post
是post对象。
注意:另一种方法是使用get_post_field( \'post_title\', $post_id )
, 默认情况下只有过滤器\'post_title\'
应用于它(而不是the_title
过滤器)。然而,正如@PatJ善意地指出的,使用可选的$context
参数,可以使用上下文获取原始值"raw"
:
get_post_field( \'post_title\', $post_id, \'raw\' );