如果是 ACF 块模板
If is ACF block template
我正在使用 ACF 构建积木。
这是我通过 functions.php 编写的一个简单函数:
<?php
function my_test_function() {
if ( is_page_template( 'template-parts/blocks/hero/hero.php' ) ) {
echo '<p>I appear via the hero.php template.</p>';
}
if ( is_page_template( 'template-parts/blocks/video/video.php' ) ) {
echo '<p>I appear via the video.php template.</p>';
}
}
?>
这是我通过 hero.php 和 video.php
调用函数的方式
<?php
my_test_function();
?>
当我测试这个时,什么也没有出现。我猜 is_page_template
function 在这种情况下不起作用,因为它在技术上不是页面模板。
是否有其他函数可以与 ACF 块模板一起使用?
您可以使用 parse_block()
: https://developer.wordpress.org/reference/functions/parse_blocks/ 然后遍历块以检查此页面是否存在 blockName :
function check_if_block_exist($block_handle) {
$post = get_post();
if(has_blocks($post->post_content)) {
$blocks = parse_blocks($post->post_content);
foreach( $blocks as $block ) {
if($block['blockName'] === $block_handle) {
return true;
}
}
return false;
}
}
我正在使用 ACF 构建积木。
这是我通过 functions.php 编写的一个简单函数:
<?php
function my_test_function() {
if ( is_page_template( 'template-parts/blocks/hero/hero.php' ) ) {
echo '<p>I appear via the hero.php template.</p>';
}
if ( is_page_template( 'template-parts/blocks/video/video.php' ) ) {
echo '<p>I appear via the video.php template.</p>';
}
}
?>
这是我通过 hero.php 和 video.php
调用函数的方式<?php
my_test_function();
?>
当我测试这个时,什么也没有出现。我猜 is_page_template
function 在这种情况下不起作用,因为它在技术上不是页面模板。
是否有其他函数可以与 ACF 块模板一起使用?
您可以使用 parse_block()
: https://developer.wordpress.org/reference/functions/parse_blocks/ 然后遍历块以检查此页面是否存在 blockName :
function check_if_block_exist($block_handle) {
$post = get_post();
if(has_blocks($post->post_content)) {
$blocks = parse_blocks($post->post_content);
foreach( $blocks as $block ) {
if($block['blockName'] === $block_handle) {
return true;
}
}
return false;
}
}