使用 ACF 文本字段在特定页面上显示元标记。在 functions.php 中无法将 acf 字段正确设置为 return

Using an ACF text field to display metatag on specific pages. Can't get the acf field to return correctly in functions.php

我正在我们的网站上实施 ios 智能横幅,但我们只希望它显示在选定的页面上。我已经设置了一个 ACF 文本字段,其中我将页面 ID 作为逗号分隔的字符串(例如:1234, 1235, 1236, 1237)。

在 functions.php 文件中,我创建了以下函数以将元标记添加到正确的页面:

function enable_app_banner()
{
    $enabledpages = the_field('allowed_pages', 'options');
    
    if (is_page([$enabledpages])) {
        echo '<meta name="apple-itunes-app" content="app-id=12345678">';
    }
}
add_action('wp_head', 'enable_app_banner');

然而,这并没有得到我需要的结果,令人恼火的是,当将值硬编码到数组中时它会起作用;

if (is_page([1234, 1235, 1236])) {
        echo '<meta name="apple-itunes-app" content="app-id=12345678">';
    }

如有任何帮助,我们将不胜感激!

正如您提到的,您设置了一个 ACF 文本字段,它为您提供了 逗号分隔的字符串(例如:1234, 1235, 1236, 1237)。is_page() 方法接受 ID 数组。

您必须先将字符串转换为数组。使用 explode() 方法这样做:

function enable_app_banner() {
  $enabledpages = the_field('allowed_pages', 'options');
  // Using explode method to convert comma separated string into an array.
  $enabledPagesArray = explode(', ', $enabledpages);

  if (is_page($enabledPagesArray)) {
    echo '<meta name="apple-itunes-app" content="app-id=12345678">';
  }
}