我有一个服务器端呈现的块,它列出了带有页面缩略图的卡片,标题用链接包装。我希望链接只在我在前端时获得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。我真的不知道为什么,我唯一能想到的是,这是因为块是服务器端渲染的。有办法吗?
最合适的回答,由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\';
};