我正在为主题创建自定义标题块。它从三个不同的图像和文本生成特殊的布局。当帖子包含此阻止时,应仅在首页上显示此阻止。我找到了一个可行的解决方案,但似乎很脏,我也想将其封装在块插件中,而不是主题中。
主题的当前解决方案(在content.php中):
<table>
我还尝试将其集成到插件文件中:
$content = get_the_content();
if( !is_frontpage() && has_blocks( $content ) ) {
$blocks = parse_blocks( $content );
if ( !empty($blocks) && $blocks[0]['blockName'] === 'namespace/block' ) {
echo $blocks[0]['innerHTML'];
}
else {
the_content();
}
}
但这不起作用,因为'has_blocks'返回false,'parse_blocks'不返回任何东西。
更新
我找到了解决方案。您需要为add_filter函数赋予优先级(第三个参数):
function namespace_block_frontpage_blocks($content) {
if( is_front_page() && has_blocks( $content ) ) {
$blocks = parse_blocks( $content );
if ( !empty($blocks) && $blocks[0]['blockName'] === 'namespace/block' ) {
return $blocks[0]['innerHTML'];
}
}
return $content;
}
add_filter( 'the_content','namespace_block_frontpage_blocks' );
答案 0 :(得分:0)
这可以通过CSS来完成:Wordpress的首页在其 BindingExpression bindingExpression = BindingOperations.GetBindingExpression(this, SelectedItemProperty);
object s = bindingExpression?.ResolvedSource;
string pn = bindingExpression?.ResolvedSourcePropertyName;
var type = s?.GetType().GetProperty(pn)?.PropertyType;
标签中具有home
类,因此,例如,如果您的区块类为body
,则可以将其写入样式表:
.my_block_1
这将在首页以外的所有页面上隐藏该块。