在functions.php中获取相关组的ACF字段值(通过Post Object)
Posted
技术标签:
【中文标题】在functions.php中获取相关组的ACF字段值(通过Post Object)【英文标题】:Get ACF field values of related group (via Post Object) in functions.php 【发布时间】:2021-01-21 03:15:18 【问题描述】:我有 2 种 WordPress 自定义帖子类型:CLIENT 和 MEASUREMENT
我还有 2 个 ACF 组:CLIENT 和 MEASUREMENT
我有多个客户帖子。
当我创建一个新的 MEASUREMENT 帖子时,我可以通过“帖子对象字段”选择一个客户来设置与客户的关系。
当我完成 MEASUREMENT 帖子后,我想将数据通过电子邮件发送给客户。
我知道如何发送包含所有 MEASUREMENT 数据的电子邮件,但我无法从相关 CLIENT 帖子中获取电子邮件地址(重复字段)。
当我在模板文件中调用这些 CLIENT 电子邮件地址时,我可以执行以下操作(工作):
$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
对其进行了测试)但我不知道需要在 ?????? 上放置什么来获取子字段值相关客户帖子中的相关字段...
我希望我的问题很清楚?
// 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 );
换句话说: 如何检索实际上不在 GROUP/POST 本身但在连接的(通过 post 对象)GROUP/POST 中的字段的字段值(在 functions.php 中)?
【问题讨论】:
【参考方案1】:只是为了分享:
$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');
所有荣誉都转到John Huebner。
【讨论】:
以上是关于在functions.php中获取相关组的ACF字段值(通过Post Object)的主要内容,如果未能解决你的问题,请参考以下文章
php WordPress:在ACF字段中搜索,functions.php