在页面或存档头中显示 ACF 字段
Displaying ACF field in page or archive head
我想使用 ACF 字段将 Schema merkup 注入我的 WordPress 网站上的几个特定页面。其中一些是自定义分类法或自定义 post 类型。
经过两个小时的研究,我仍然卡住了。
我创建了一个名为 schema_code 的文本区域字段,并为我的一些子页面输入了所需的架构标记。
我目前在我的 functions.php 中使用这段代码,它没有做任何事情:
function acf_header_script() {
$schema = get_field('schema_code');
echo '<script type=application/ld+json>' . json_encode($schema_code) . '</script>';
}
add_action ( 'wp_head', 'acf_header_script' );
我在这里错过了什么?非常感谢!
在这种情况下,ACF 的第二个参数 get_field()
是必需的,因为您不在循环中。它要么是 post->ID
,要么是 {taxonomy_name}_{taxonomy_id}
https://www.advancedcustomfields.com/resources/get_field/
的分类 ID
既然你想在页面和存档等上这样做......你需要首先确定它是单个页面还是存档等
function acf_header_script() {
// is it a single post?
if ( ! is_single() ) {
// no? get the queried object.
$object = get_queried_object();
if ( is_a( $object, 'WP_POST' ) ) {
$param = $object->ID;
} else {
$param = $object->taxonomy . '_' . $object->term_id;
}
} else {
// yes it's a single.
global $post;
$param = $post->ID;
}
$schema = get_field( 'schema_code', $param );
// if $schema is not empty.
if ( $schema ) {
echo '<script type=application/ld+json>' . json_encode( $schema ) . '</script>';
}
}
add_action( 'wp_head', 'acf_header_script' );
我想使用 ACF 字段将 Schema merkup 注入我的 WordPress 网站上的几个特定页面。其中一些是自定义分类法或自定义 post 类型。
经过两个小时的研究,我仍然卡住了。
我创建了一个名为 schema_code 的文本区域字段,并为我的一些子页面输入了所需的架构标记。
我目前在我的 functions.php 中使用这段代码,它没有做任何事情:
function acf_header_script() {
$schema = get_field('schema_code');
echo '<script type=application/ld+json>' . json_encode($schema_code) . '</script>';
}
add_action ( 'wp_head', 'acf_header_script' );
我在这里错过了什么?非常感谢!
在这种情况下,ACF 的第二个参数 get_field()
是必需的,因为您不在循环中。它要么是 post->ID
,要么是 {taxonomy_name}_{taxonomy_id}
https://www.advancedcustomfields.com/resources/get_field/
既然你想在页面和存档等上这样做......你需要首先确定它是单个页面还是存档等
function acf_header_script() {
// is it a single post?
if ( ! is_single() ) {
// no? get the queried object.
$object = get_queried_object();
if ( is_a( $object, 'WP_POST' ) ) {
$param = $object->ID;
} else {
$param = $object->taxonomy . '_' . $object->term_id;
}
} else {
// yes it's a single.
global $post;
$param = $post->ID;
}
$schema = get_field( 'schema_code', $param );
// if $schema is not empty.
if ( $schema ) {
echo '<script type=application/ld+json>' . json_encode( $schema ) . '</script>';
}
}
add_action( 'wp_head', 'acf_header_script' );