【问题标题】:Displaying ACF field in page or archive head在页面或存档头中显示 ACF 字段
【发布时间】:2022-01-20 09:49:53
【问题描述】:

我想使用 ACF 字段将 Schema merkup 注入到我的 WordPress 网站上的几个特定页面。其中一些是自定义分类法或自定义帖子类型。

在对该主题进行了两个小时的研究之后,我仍然陷入困境。

我创建了一个名为 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' );

我在这里缺少什么?非常感谢!

【问题讨论】:

标签: php wordpress advanced-custom-fields acfpro


【解决方案1】:

在这种情况下,ACF get_field() 的第二个参数是必需的,因为您不在循环中。它要么是post-&gt;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' );

【讨论】:

  • 非常感谢!我错过了 - 它现在可以工作了:)
猜你喜欢
  • 2019-01-26
  • 2020-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-06
  • 2021-06-23
  • 2021-04-02
  • 2019-11-17
相关资源
最近更新 更多