如何在wordpress functions.php中检测post_格式
如何在函数中检测当前帖子的post_格式,以便启动特定的post脚本如何在wordpress functions.php中检测post_格式,php,wordpress,Php,Wordpress,如何在函数中检测当前帖子的post_格式,以便启动特定的post脚本 if (has_post_format( 'gallery' )){ echo 'testing 123'; } 我在functions.php中尝试过,在设置为gallery的帖子上,什么都没有发生。如果我将回显行放在If的外部,它会显示在每个页面的顶部(如预期的那样),为什么“has_post_format”不起作用?has_post_format()只会在循环内部起作用,如果您不提供第二个参数post_ID的话
if (has_post_format( 'gallery' )){
echo 'testing 123';
}
我在functions.php中尝试过,在设置为gallery的帖子上,什么都没有发生。如果我将回显行放在If的外部,它会显示在每个页面的顶部(如预期的那样),为什么“has_post_format”不起作用?has_post_format()只会在循环内部起作用,如果您不提供第二个参数post_ID的话。如果您不在循环内,则必须发送post_id
由于您是从functions.php执行此操作,因此您需要以某种方式检索postID。在这种情况下,我们可以根据URL来完成。所以
$url = explode('?', 'http://'.$_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
$postID = url_to_postid($url[0]);
现在你可以这样比较了
has_post_format('gallery', $postID) { /** do your thing **/ }
函数
get\u post\u format()
返回什么?正如阿瑞斯指出的,除非它在循环中,否则它不会返回任何东西。这意味着我必须找到一种不同的方式进行检查。你知道运行检查的方法吗?我明白了,有什么方法可以从循环外部执行检查吗?据我所知,如果(!is_page('x'))检查特定页面,您可以这样做。您能否提供有关您尝试执行的操作以及运行位置的更多上下文,请参阅has_post_format()?我正在加载一个特定脚本,该脚本仅用于画廊类型的帖子。因此,我考虑在我的函数中的add_操作行周围包装一个if=post_format(gallery)语句。php这确实有效,但让每个页面都加载这些行对资源来说是不好的?