我想在Wordpress中使用联系表单7来构建订单表单。我希望订单表格的内容填充自定义帖子类型“贸易展示材料”的内容 - 帖子类型包含字段“名称”“数字”“描述”“照片”。我们的想法是可以从表格中选择每件作品。任何人都可以为此提供总体方向吗?我应该完全使用另一个插件吗?
答案 0 :(得分:12)
也许您可以使用wpcf7_form_tag
过滤器钩子。
如果您想使用自定义帖子类型作为下拉列表(选择)的选项,您可以在functions.php中添加如下示例:
function dynamic_field_values ( $tag, $unused ) {
if ( $tag['name'] != 'your-field-name' )
return $tag;
$args = array (
'numberposts' => -1,
'post_type' => 'your-custom-post-type',
'orderby' => 'title',
'order' => 'ASC',
);
$custom_posts = get_posts($args);
if ( ! $custom_posts )
return $tag;
foreach ( $custom_posts as $custom_post ) {
$tag['raw_values'][] = $custom_post->post_title;
$tag['values'][] = $custom_post->post_title;
$tag['labels'][] = $custom_post->post_title;
}
return $tag;
}
add_filter( 'wpcf7_form_tag', 'dynamic_field_values', 10, 2);
在表单中,您可以添加字段:
[select* your-field-name include_blank]
在上面的示例中,post_title用于下拉列表的选项中。您可以在此处添加自己的字段(名称,编号,说明,照片)。
答案 1 :(得分:1)
我认为wpcf7_form_tag的工作原理与维森特在之前的回答中所表现的相同。它可能自2015年以来发生了变化。
如果您在此处阅读,则说明您需要如何使用wpcf7_form_tag:https://contactform7.com/2015/01/10/adding-a-custom-form-tag/
考虑到这一点以及联系表格7中的其他帖子:https://contactform7.com/2015/02/27/using-values-from-a-form-tag/#more-13351
我想出了这个代码,为我自己的自定义帖子类型创建自定义下拉列表。
add_action('wpcf7_init','custom_add_form_tag_customlist');
function custom_add_form_tag_customlist() {
wpcf7_add_form_tag( array( 'customlist', 'customlist*' ),
'custom_customlist_form_tag_handler', true );
}
function custom_customlist_form_tag_handler( $tag ) {
$tag = new WPCF7_FormTag( $tag );
if ( empty( $tag->name ) ) {
return '';
}
$customlist = '';
$query = new WP_Query(array(
'post_type' => 'CUSTOM POST TYPE HERE',
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
));
while ($query->have_posts()) {
$query->the_post();
$post_title = get_the_title();
$customlist .= sprintf( '<option value="%1$s">%2$s</option>',
esc_html( $post_title ), esc_html( $post_title ) );
}
wp_reset_query();
$customlist = sprintf(
'<select name="%1$s" id="%2$s">%3$s</select>', $tag->name,
$tag->name . '-options',
$customlist );
return $customlist;
}
然后你就像这样使用联系表格7中的标签。
[customlist your-field-name]
希望这能帮助那些正在寻找方法的人像我一样。
您可以更改它以从自定义帖子类型中获取所需的任何信息。
它没有任何验证。