Wordpress + Timber + ACF Pro. Внутри functions.php у меня есть действие, которое запускается всякий раз, когда публикуется сообщение (с типом недели).ACF пользовательское поле. Получите поле внутри действия внутри functions.php
Я хотел бы взять данные с этого поста и использовать его для создания нового сообщения для каждого отдельного пользователя.
У меня есть работа после моды. Когда публикация публикуется, я захватываю название и имя пользователя и использую его как заголовок для вновь созданного сообщения.
Тем не менее, я сталкивался с проблемами при попытке получить данные ACF - например: поле даты недели. Все данные ACF возвращают NULL (я знаю, что поля заполнены).
Я прочитал документы, которые заявляют о доступе к данным, вам нужно вызвать get_field ('field_name', 'post_id') - что я сделал.
Я выписал $ ID - так что знайте, что это правильно.
Возможно ли это из-за порядка, в котором я запускаю вещи?
Вот мой код:
function weekly_published_post_setup($ID, $post) {
$customers = get_users();
$theDate = get_field("week_commencing", $ID);
// Array of WP_User objects.
foreach ($customers as $user) {
$new_post = array(
'post_type' => 'weekly_tasks',
'post_title' => $post->post_title . ' - ' . $theDate . ' - ' . $user->display_name,
'post_content' => $theDate,
'post_status' => 'publish',
'post_author' => $user->ID
);
wp_insert_post($new_post);
}
}
add_action('publish_week', 'weekly_published_post_setup', 10, 2);
** EDIT **
Оказывается, что WordPress пост был спасаемый перед полями АКФОМ был создан? Поэтому приятель реорганизовал мой код, чтобы использовать другое событие. Однако это не срабатывает, когда публикация публикуется ...
function week_published_delivery_setup($ID) {
$post = get_post($ID);
if ($post->post_type != 'week') {
return;
}
if($post->post_modified_gmt != $post->post_date_gmt){
return;
}
$customers = get_users();
$field = get_field('week_commencing', $ID);
$fields = post.get_field_objects($ID);
if($fields)
{
foreach($fields as $field_name => $field)
{
$tmp .= $field['label'] . $field['value'];
}
}*/
// Array of WP_User objects.
foreach ($customers as $user) {
$new_delivery_post = array(
'post_type' => 'delivery',
'post_title' => $post->post_title . ' - ' . $field . ' - ' . $user->display_name,
'post_content' => $post->post_title,
'post_status' => 'publish',
'post_author' => $user->ID
);
wp_insert_post($new_delivery_post);
}
}
add_action('acf/save_post', 'week_published_delivery_setup', 20);