Is_admin在服务器端呈现的块的后端返回FALSE

时间:2019-07-24 作者:Jonas Merhej

我有一个服务器端呈现的块,它列出了带有页面缩略图的卡片,标题用链接包装。我希望链接只在我在前端时获得a href,这样我就避免在后端错误地点击卡片,并被重定向到卡片页面。这是我的代码:

$link = is_admin() ? ""
        : " href=\'" . get_permalink($post->ID) . "\'";
              
echo <<<CPTItem
    <div class="cpt-list-item"><a class="cpt-list-item__link" $link>
CPTItem;
不幸的是,is\\u admin()在块本身的后端返回false。我真的不知道为什么,我唯一能想到的是,这是因为块是服务器端渲染的。有办法吗?

1 个回复
最合适的回答,由SO网友:Sören Wrede 整理而成

如果在后端有服务器端渲染块,则通过REST API端点渲染该块/wp/v2/block-renderer/xyz/blockname. 此端点调用渲染函数。在前端,直接调用渲染函数。功能is_admin() 检查是否请求了后端页面。在REST API中,请求没有后端页,因此函数返回false 在REST API请求上。

相反,您可以通过以下方式检查它是否是REST API请求:

if ( defined( \'REST_REQUEST\' ) && REST_REQUEST ) {
    return \'Backend\';
} else {
    return \'Frontend\';
};