Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在wordpress functions.php中检测post_格式_Php_Wordpress - Fatal编程技术网

如何在wordpress functions.php中检测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的话

如何在函数中检测当前帖子的post_格式,以便启动特定的post脚本

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这确实有效,但让每个页面都加载这些行对资源来说是不好的?