WP Contact Form 7 –如何在一个选择选项字段中组合来自cpt的两个动态值?

时间:2018-08-11 10:16:27

标签: wordpress contact-form-7

我在这里和搜索引擎四处张望,但不幸的是我找不到适合自己的解决方案。

因此,我现在就我需要为Contact Form 7 WordPress插件自定义的功能寻求帮助。该函数来自another question

在一个下拉菜单中(选择),我在一个选项字段中需要两个详细信息(车间名称和日期)。这两个详细信息来自自定义帖子类型的同一帖子。第一个细节是post_title,第二个细节是Meta-Box插件的自定义字段。

以下函数原则上起作用,但仅返回一个或另一个详细信息。解决方案可能在foreach构造中。但是我不知道它是如何工作的。

非常感谢您的支持!

[更新2018-08-12] 经过进一步研究,我在this post找到了解决方案,并相应地更改了功能。

解决方案应如下所示:

<select>
<option value="workshop name – date">workshop name – date</option>
...
</select>

这是功能:

add_filter( 'wpcf7_form_tag', 'dynamic_field_choose_workshop', 10, 2);

function dynamic_field_choose_workshop ( $tag, $unused ) {

    if ( $tag['name'] != 'workshop' )
        return $tag;

    $args = array (
        'post_type'     => 'workshop',
        'post_status'   => 'publish',
        'orderby'       => 'name',
        'order'         => 'ASC',
        'numberposts'   => - 1,
    );

    $custom_posts = get_posts($args);

    if ( ! $custom_posts )
        return $tag;

    foreach ( $custom_posts as $custom_post ) {
    $ID = $custom_post->ID;
        $tag['values'][] = $custom_post->post_title . ' - ' . rwmb_get_value('workshop_meta_boxes_date', '', $ID);
        $tag['raw_values'][] = $custom_post->post_title . ' - ' . rwmb_get_value('workshop_meta_boxes_date', '', $ID);
        $tag['labels'][] = $custom_post->post_title . ' - ' . rwmb_get_value('workshop_meta_boxes_date', '', $ID);
    }

    return $tag;

}

1 个答案:

答案 0 :(得分:0)

有CF7扩展程序将为您完成此操作。检出Smart Grid-Layout for CF7,它引入了一个名为dynamic_dropdown的新标记。这就是您要使用的。 dynamic_dropdown创建一个选择字段,并允许您使用分类法,帖子类型的标题或过滤器填充字段选项。您想使用过滤器选项根据您的要求实际构建选项。标签弹出窗口是不言自明的,但是,如果您在下面发表评论时感到困惑,我会给您更多提示。