将字段值设置在1个位置,并将这些值应用于所有其他页面

时间:2019-03-26 08:29:56

标签: wordpress advanced-custom-fields

我正在将ACF用于广告。有2个栏位,分别是广告图片和点击图片所指向的链接。我已经设置好它们,并且它们工作正常。必须将它们显示在主页和帖子页上。

现在这个问题是关于什么的:我希望能够仅在主页上(或者您有更好的主意的其他地方)设置广告,并将这些字段值应用于帖子页面。

当前,我将其设置为主页,可以正常使用。但是,如果我创建一个新的博客文章,则需要为每个新的博客文章选择广告。我认为这是糟糕的UX,因为如果只有1个广告,最好将它设置一次并将其应用于其他任何地方。

实现此目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

编辑:查看可接受的答案以获得更清洁的解决方案

我做了更多研究,找到了解决方法。

在主题的functions.php中,为要获取的字段创建一个函数。对于我来说情况看起来像这样

// Get the Sponsored Content Image 
function get_sponsored_content_image()
{
  return get_field('advertisement_photo');
}

然后在您要访问该字段的模板部分中执行以下操作:

<?php $sponsored_photo = get_sponsored_content_image();

答案 1 :(得分:0)

使用ACF进行此操作的真正方法是使用$ post-> ID参数。

假设您在首页上设置了该字段的值,现在您将无法在其他页面上使用该字段,那么以下内容将无法正常工作:

$frontpage_id = (int)get_option( 'page_on_front' );
the_field('homepage_field', $frontpage_id);

您需要告诉ACF什么页面ID来检查其值:

df = df.assign(column=value)

如果您要获取在wordpress选项中设置为首页的首页,请使用以下内容:

column

这也可以与:

  • get_field('field_name',$ pageID)
  • get_sub_field('field_name',$ pageID)
  • the_sub_field('field_name',$ pageID)
  • have_rows('field_name',$ pageID)

关于您提到的一种可能的不同选择,我们建议您选择。试试Premium ACF Options Page插件,它将允许您使用以下方法获取字段:

  • the_field('field_name','options')
  • get_field('field_name','options')
  • get_sub_field('field_name','options')
  • the_sub_field('field_name','options')
  • have_rows('field_name','options')