我有兴趣在另一个页面上重用一个页面中的自定义字段,同时保留其样式和结构。本质上,我想将一个字段从一个 ACF 组复制到另一个 ACF 组,确保它无缝地适合自定义主题内目标页面的布局和设计。
该网站是由 WordPress 开发人员利用高级自定义字段 (ACF) 和自定义主题开发的。
开发人员使用每个页面的单独模板构建主题的代码,定义布局和设计元素。
<?php
/* Template Name: Sobre */
global $url_tema, $link_blog, $nome_blog;
get_header();
$showposts = 21;
$paged = 1;
if( isset($_GET['pagina']) ):
$paged = $_GET['pagina'];
$offset = ($paged - 1) * $showposts;
endif;
?>
<main class="sobre-page">
<div class="bannerTop bg">
<div class="main">
<h1><?php the_title() ?></h1>
</div>
<img src="<?php echo get_field('imagem_banner')['url'] ?>" class="bg">
</div>
<section class="section01">
<div class="main">
<div class="bannerSection">
<div class="ctn">
<h3>Who We Are</h3>
</div>
</div>
<div class="text"><?php echo get_field('texto_01') ?></div>
</div>
</section>
<div class="ctnVideo mt-40">
<div class="main">
<div class="gallery">
<?php
foreach (get_field('videos_01') as $key) {
$url = $key['video'];
parse_str( parse_url( $url, PHP_URL_QUERY ), $my_array_of_vars );
echo '<iframe width="560" class="item" height="315" src="https://www.youtube.com/embed/'.$my_array_of_vars['v'].'" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>';
}
?>
</div>
</div>
</div>
<section class="sectionTimeline">
<div class="main">
<div class="slider">
<?php
foreach (get_field('timeline') as $key ) {
echo '<div class="_item">
<figure><img src="'.$key['imagem']['sizes']['medium'].'"></figure>
<div class="right">
<div class="ctn">
<strong>'.$key['titulo'].'</strong>
<p>'.$key['texto'].'</p>
</div>
</div>
</div>';
}
?>
</div>
</div>
</section>
<div class="main">
<div class="bannerSection">
<div class="ctn">
<h3><?php echo get_field('titulo_topo_03') ?></h3>
</div>
<img src="<?php echo get_field('banner_topo_03')['url'] ?>" class="bg">
</div>
<img src="<?php echo get_field('mapa')['url'] ?>" class="map">
<div class="collum-01">
<!-- <div class="left">
<img src="<?php echo $url_tema ?>assets/images/pin.png" class="icon">
<div class="list">
<p>Fortaleza/CE</p>
<p>Caucaia/CE</p>
<p>Parnaíba/PI</p>
</div>
</div> -->
<div class="text"><?php echo get_field('texto_03') ?></div>
</div>
<div class="bannerSection">
<div class="ctn">
<h3><?php echo get_field('titulo_topo_04') ?></h3>
</div>
<img src="<?php echo get_field('banner_topo_04')['url'] ?>" class="bg">
</div>
<div class="column">
<div class="text"><?php echo get_field('texto_04') ?></div>
</div>
<div class="bannerSection">
<div class="ctn">
<h3><?php echo get_field('titulo_topo_4_5') ?></h3>
</div>
<img src="<?php echo get_field('banner_topo_4_5')['url'] ?>" class="bg">
</div>
<div class="column">
<div class="text"><?php echo get_field('texto_4_5') ?></div>
</div>
<div class="bannerSection">
<div class="ctn">
<h3><?php echo get_field('titulo_topo_05') ?></h3>
</div>
<img src="<?php echo get_field('banner_topo_05')['url'] ?>" class="bg">
</div>
<div class="listPoints">
<?php
foreach (get_field('lista_04') as $key ) {
echo '<div class="_item">
<div class="icon"></div>
<div class="text">'.$key['item'].'</div>
</div>';
}
?>
</div>
</div>
</main>
<?php
get_footer();
此外,他还为 ACF 中的每个页面创建了自定义字段组,使用标签、名称和字段类型来组织内容。
在主题的代码中,开发人员从与每个页面关联的各个 ACF 组中检索每个自定义字段的值,并将它们集成到模板文件中。
我尝试过复制字段
如果您要查找的数据存储在特定帖子中,并且您知道或可以检索帖子 ID,则相关 ACF
get_*
/ the_*
调用支持将帖子 ID 作为可选参数传递:
get_field($selector, [$post_id = false], [$format_value = true], [$escape_html = false]);
如果您的帖子 ID 为
5
,例如:
get_field('texto_01', 5);
将返回 texto_01
的 ACF 字段值,专门针对帖子 ID 5
。
如果有多个页面需要引用的数据/字段,我建议将 ACF 选项页面视为选项的“全局”存储,并使用
'option'
代替 $post_id
参数。如果您从多个页面引用单个帖子的字段,则可以将该帖子的 ID 存储在全局选项页面中,然后引用它来检索其帖子 ID,然后在自定义字段调用中使用它。