问题是,因为此代码正在functions.php
在没有任何数据传递给它的情况下,它不知道正在运行什么类型的查询,因此它将始终执行else
行动
你可以把它拿出来functions.php
并更改您的header.php
要直接包含代码:
<?php
// ... other header code
function body_schema()
{
$schema = \'http://schema.org/\';
if(is_search())
{
$type = "SearchResultsPage";
} else {
$type = \'Blog\';
}
echo \'itemscope itemtype="\' . $schema . $type . \'"\';
} ?>
<body <?php body_class();?> <?php body_schema(); ?>>
这将起作用,因为当代码在页面本身上运行时,它知道当前查询是否是搜索查询。
如果你想保持你的功能functions.php
, 您需要从标头向其传递一个参数。例如,您可以通过$query
var当前正在运行header.php
这样你的功能functions.php
知道你在问什么问题。