似乎$post只对在特定时间执行的挂钩可用。我有一个“init”钩子,需要使用$post->ID从数据库中提取一些数据。
到目前为止,我唯一的解决方法是在\\u内容上添加另一个过滤器,它使用$post来获取我需要的信息。不幸的是,它还将返回值回显到屏幕上,并且实际上无法将其返回到最初调用过滤器的函数。
下面是提取我需要的数据的代码,但会产生回声,并且无法返回值:
add_filter(\'the_content\', \'get_keyword\');
function get_keyword()
{
global $post;
$keyword = get_post_meta( $post->ID, \'_wpg_def_keyword\', true );
return $keyword;
}
有没有人对如何获取我需要的内容并将其传递回调用函数以便以后在插件中使用有任何建议?
编辑:为了更清楚地说明这一点,我在init上运行了一个过滤器,它需要能够从DB中检索当前帖子的信息。要做到这一点,它需要访问$post->ID。但这在init中是不可能的,所以我如何才能获得所需的结果?
谢谢
乔纳森
SOLVED:
事实证明,答案很简单,就是使用url\\u to\\u postid,如下所示:
$keyword = get_post_meta(
url_to_postid( "http://".$_SERVER[\'SERVER_NAME\'].$_SERVER[\'REQUEST_URI\'] ),
\'_wpg_def_keyword\',
true
);
Works perfectly even from init.