如何为每个帖子对象添加自定义字段[acf]

时间:2018-05-23 22:46:47

标签: wordpress repeater advanced-custom-fields

我希望使用ACF为每个帖子对象添加自定义字段

我有两种不同的自定义帖子类型:"清洗程序" "清洗"

我需要在Washes Field Group上添加一个" Number Field"基于"洗涤程序"讯息。

因此,如果在"洗涤"中有3种不同的"洗涤程序"我想要3个字段:

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

我正在考虑它的逻辑很长时间,但仍然无法弄清楚如何实现这一目标。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

听起来你不知道有多少帖子" Wash Programs"将有,但每次你添加一个新的"洗涤程序"您需要为每个" Wash添加一个额外的数字字段。"

也许可以通过向每个" Wash"添加Repeater字段来达到解决方法。这需要两个子字段:一个post对象和一个数字字段。

在该转发器中,您可以分配新的"洗涤程序"然后你需要的数字字段" Wash"这与#34;洗涤计划有关。"

答案 1 :(得分:0)

我认为许多开发人员有时会遇到这种要求,因此我将在此处发布如何完成这项工作。

因此,基本上我首先查询所有洗涤程序,然后为每个洗涤程序查询,我在 Washes 字段组上创建了新字段

这是代码

<?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;
?>

结果正是我想要的

Automatically added Wash Programs to Washes Post Type