WP - ACF 和自定义主题 - 如何显示我网站其他页面的现有自定义字段?

问题描述 投票:0回答:1

我有兴趣在另一个页面上重用一个页面中的自定义字段,同时保留其样式和结构。本质上,我想将一个字段从一个 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 组中检索每个自定义字段的值,并将它们集成到模板文件中。

我尝试过复制字段

wordpress advanced-custom-fields custom-theme
1个回答
0
投票

如果您要查找的数据存储在特定帖子中,并且您知道或可以检索帖子 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,然后在自定义字段调用中使用它。

© www.soinside.com 2019 - 2024. All rights reserved.