在单独的 PHP 文件中一次性提取高级自定义字段的数据



有时一个页面使用数十个ACF字段 - 例如在中继器字段的情况下。数十个 ACF 字段意味着数十个if (get_field('blabla') { the_field('blabla'); }(以及其他 ACF 代码(堵塞了页面的 PHP 模板文件并使其实际上难以阅读和维护,我想将所有 ACF 数据提取到 PHP 变量中供我的模板使用。

问题:如果我这样做,我需要在模板的开头将所有 PHP 变量声明为全局变量。没有前者那么丑陋,但仍然丑陋。

我还没有想到其他选择吗?

我认为对于中继器字段,您可以在同一页面中为每个特定任务设置一个函数,并在同一文件中根据需要调用该函数。例如:

<html>
    <head>
    </head>
    <body>
        <div><?php call_user_func( 'who_weve_worked_with', get_the_ID() ); ?></div>
    </body>
</html>

现在,您可以将所有函数放在单独的文件中,例如:

theme-folder/inc/acf-fucntions.php

它需要包含在函数中.php

<?php require get_template_directory() . '/inc/acf-fucntions.php'; ?>

对于子主题,

<?php require get_stylesheet_directory() . '/inc/acf-fucntions.php'; ?>

现在,在 acf 函数.php,

<?php
if( !function_exists( 'who_weve_worked_with' ) ) {
function who_weve_worked_with( $post_id )   {
    ?>
    <div>      
        <ul class="nav nav-tabs">
            <?php
            if ( have_rows( 'repeater_field_name', $post_id ) ) :
                $i = 0;
                while ( have_rows ( 'repeater_field_name', $post_id ) ) : the_row();
                    $img = get_sub_field( 'repeater_sub_field_name', $post_id );
                    ?>
                    <li role="presentation">
                        <img src="<?php echo $img[ 'url' ]; ?>" alt="<?php echo $img[ 'alt' ]; ?>">
                    </li>
                    <?php
                    $i++;
                endwhile;
            endif;
            ?>
        </ul>
    </div>
    <?php
    }
}

请不要忘记在调用函数时传递 POST ID,您的函数需要一个参数,即 POST ID,如上所示。

希望这对你有用。

谢谢

相关内容

  • 没有找到相关文章

最新更新