Как добавить настраиваемое поле для каждого объекта записи [acf] - PullRequest
0 голосов
/ 24 мая 2018

Я хочу добавить настраиваемое поле для каждого объекта записи с ACF.

У меня есть два различных типа записей: "Программы стирки" и "Моет"

Мне нужно добавить в Группу моющих полей "Поле чисел", основанное на сообщениях "Моющих программ".

Так что, если есть 3 разные "Моющие программы"", в" Моет "я хочу иметь 3 поля:

"Wash Program 1" -> "Number Field"
"Wash Program 2" -> "Number Field"
"Wash Program 3" -> "Number Field"

Я думаю о логике этого много часов, но все еще не могу понять, как этого добиться.

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 23 июня 2018

Я считаю, что многие разработчики когда-нибудь столкнутся с такого рода запросами, поэтому я опубликую здесь, как я сделал эту работу.

Так что в основном я запрашивал все Программы стирки сначала, а затем для каждой программы стирки я создал новое поле для стирки группа полей

Вот код

<?php 
// Check if function exists
if( function_exists('acf_add_local_field_group') ):

// Query the wash_program posts
$posts = get_posts(array(
    'posts_per_page'    => -1,
    'post_type'         => 'wash_program'
));

// Initialize empty array for filling later
$arr = [];

// Just a number to add on the 'key'
$c = 0;


if($posts) :
    // For each wash_program post
    foreach($posts as $post):

        setup_postdata($post);

        // Prepare the array
        array_push($arr, array(
            'key' => 'field_777'. $c,           # key used by acf
            'label' => get_field("wp_name"),    # label 
            'name' => 'sub_title_' . $c,
            'type' => 'number'
        ));

        $c++;
    endforeach;
    wp_reset_postdata();
endif;


// Add new fields on 'wash' post type
acf_add_local_field_group(

    array(
        'key' => 'group_1',
        'title' => 'Washes Numbers',
        'fields' => $arr,
        'location' => 
            array (
                array (
                    array (
                        'param' => 'post_type',
                        'operator' => '==',
                        'value' => 'wash',
                    ),
                ),
        ),
));

endif;
?>

И результат былименно то, что я хотел

Автоматически добавленные программы стирки к стиркам Тип сообщения

0 голосов
/ 24 мая 2018

Звучит так, как будто вы не знаете, сколько сообщений будет иметь "Программы стирки", но каждый раз, когда вы добавляете новую "Программу стирки", вам нужно будет добавлять дополнительное числовое поле к каждому "Стирке".

Возможно, можно обойти обход путем добавления поля Repeater к каждому «Wash», которое принимает два подполя: почтовый объект и числовое поле.

В этом ретрансляторе вы можете назначить почтовый объектновая «Программа стирки», а затем нужное поле с номером в «Стирка», которое связано с этой «Программой стирки».

...