获取 functions.php 中相关组的 ACF 字段值(通过 Post 对象)

Get ACF field values of related group (via Post Object) in functions.php

我有 2 个 WordPress 自定义 post 类型:CLIENT 和 MEASUREMENT

我还有 2 个 ACF 组:CLIENT 和 MEASUREMENT

我有多个客户 post。

当我创建一个新的 MEASUREMENT post 时,我可以通过 'Post object field' select 一个 CLIENT 来设置与 CLIENT 的关系。

完成测量后post我想通过电子邮件将数据发送给客户。

我知道如何发送包含所有测量数据的电子邮件,但我无法从相关客户端 post.

中获取电子邮件地址(转发器字段)

当我在模板文件中调用这些客户电子邮件地址时,我可以做这样的事情(有效):

$measurement_client                 = get_field('measurement_client'); // Post Object in MEASUREMENT group
$measurement_client_email_addresses = get_field('company_email_addresses', $measurement_client->ID); // Repeater field in CLIENT group

但我发现我不能在我的 functions.php 文件中使用此代码,因为我必须使用 $_POST['acf'] 而不是 get_field 而这里是我丢失它的地方。

下面的代码可以正常工作(使用演示 $to 对其进行了测试)但我不知道需要在 上放置什么??????获取相关 CLIENT post...

中相关字段的子字段值

我希望我的问题很清楚?

// Send measurement report emails
add_action('acf/save_post', 'yl_send_measurement_report_emails', 5);
function yl_send_measurement_report_emails( $post_id ) {

    // Get submitted values.
    $values             = $_POST['acf'];

    $measurement_client                     = $_POST['acf']['field_5e147914518a6']; // Post Object from CLIENT group
    $measurement_client_email_addresses     = ?????? // Repeater field of CLIENT group

    if ( $measurement_client_email_addresses ) {
        $list = array();
        foreach( $measurement_client_email_addresses as $measurement_client_email_address ) {
            $list[] = $measurement_client_email_address['field_5e1452c41945c']; // Sub field of the Repeater field in the CLIENT group
        }
        $to = implode(',', $list);
    }


    $subject    = get_field('measurement_setting_email_subject', 'measurement_settings');
    $message    = get_field('measurement_setting_email_content', 'measurement_settings');

    $headers = array
        (
        'From: ' . get_bloginfo('name') . ' <' . get_bloginfo('admin_email') . '>',
        'X-Mailer: PHP/' . phpversion(),
        'MIME-Version: 1.0',
        'Content-type: text/html; charset=iso-8859-1'
    );
    $headers = implode( "\r\n" , $headers );

    wp_mail( $to, $subject, $message, $headers );

}

换句话说: 如何检索一个字段的字段值(在 functions.php 中),该字段实际上不在 GROUP/POST 本身中,而是在连接的(通过 post 对象)GROUP/POST 中?

仅供分享:

$measurement_client_id = intval($_POST['acf']['field_5e147914518a6']);
$emails = array();

if (have_rows('email_repeater', $measurement_client_id)) {
  while (have_rows('email_repeater', $measurement_client_id)) {
    the_row();
    $emails[] = get_sub_field('email_field');
  }
}

所有 kuddos 转到 John Huebner