获取 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。
我有 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。