我正在尝试为人们选择WP CF7表单中的图像创建一个选项。因为他们只能选择一个选项,在我看来,使用单选按钮功能是最好的方法。我在https://wpquestions.com/Need_Image_as_a_Radio_Button_in_Contact_Form_7/19618#answer_16362上找到了一个代码示例,但添加代码确实a)不在admin部分创建标记,b)只返回页面上的完整短代码,而不是返回所需的图像。
我在这个论坛上找到了这个How to make custom form-tag in contact form 7 required。我尝试添加
add_action( 'wpcf7_init', 'wpcf7_add_form_tag_imageradio' );
但它返回了以下错误:
警告:call_user_func_array()要求参数1是有效的回调函数,找不到函数'wpcf7_add_form_tag_imageradio'或者在第298行的/home2/clay/public_html/wp-includes/class-wp-hook.php中找到无效的函数名< / p>
关于如何解决这个问题的任何想法? 使用的主题是OnePage Express
答案 0 :(得分:1)
您需要输入两个参数:
function add_shortcode_imageradio() {
wpcf7_add_shortcode( 'imageradio', 'imageradio_handler', true );
}
add_action( 'wpcf7_init', 'add_shortcode_imageradio' );
function imageradio_handler( $tag ){
$tag = new WPCF7_FormTag( $tag );
$atts = array(
'type' => 'radio',
'name' => $tag->name,
'list' => $tag->name . '-options' );
$input = sprintf(
'<input %s />',
wpcf7_format_atts( $atts ) );
$datalist = '';
$datalist .= '<div class="imgradio">';
foreach ( $tag->values as $val ) {
list($radiovalue,$imagepath) = explode("!", $val
);
$datalist .= sprintf(
'<label><input type="radio" name="%s" value="%s" class="hideradio" /><img src="%s"></label>', $tag->name, $radiovalue, $imagepath
);
}
$datalist .= '</div>';
return $datalist;
}
别忘了CSS:
input.hideradio{ /* HIDE RADIO */
visibility: hidden; /* Makes input not-clickable */
position: absolute; /* Remove input from document flow */
}
.imgradio label > input + img{ /* IMAGE STYLES */
cursor:pointer;
border:2px solid transparent;
}
.imgradio label > input:checked + img{ /* (RADIO CHECKED) IMAGE STYLES */
border:2px solid #f00;
}
并使用contactform7中的FORM选项卡中声明的新短代码:
[imageradio radio-312
"Value1!http://[YourImgUrl]"
"Value2!http://[YourImgUrl]"
]
在示例Need Image as...中,他们错过了“add_action”,这是所有
您也可以查看CF7 doc
希望帮助!
答案 1 :(得分:0)
尝试添加
add_action( 'wpcf7_init', 'add_shortcode_imageradio' );