Tak się jakoś ostatnio złożyło, że dwa razy musiałem sięgnąć do kodu modyfikującego popularną wtyczkę Contact Form 7. Wtyczka ta ma własne funkcje, które pozwalają modyfikować wygląd formularza i wiele innych rzeczy. Jest trochę podpowiedzi i instrukcji w necie ale trzeba zwrócić uwagę na jedną ważną rzecz. Contact Form 7 przestał obsługiwać funkcję wpcf7_add_shortcode. Zamiast tego musimy użyć wpcf7_add_form_tag.
Zadanie było takie zamienić guzik wysyłający formularz z input na button ponieważ jest sporo skryptów, które nie lubią tego inputa i formularz najzwyczajniej w świecie nie działa.
[php]
add_action( 'init’, 'wpcf7_add_shortcode_submit_button’ );
function wpcf7_add_shortcode_submit_button() {
wpcf7_remove_shortcode(’submit’);
wpcf7_add_form_tag( 'submit’, 'wpcf7_submit_button_shortcode_handler’ );
}
function wpcf7_submit_button_shortcode_handler( $tag ) {
$tag = new WPCF7_Shortcode( $tag );
$class = wpcf7_form_controls_class( $tag->type );
$atts = array();
$atts[’class’] = $tag->get_class_option( $class );
$atts[’id’] = $tag->get_id_option();
$atts[’tabindex’] = $tag->get_option( 'tabindex’, 'int’, true );
$value = isset( $tag->values[0] ) ? $tag->values[0] : ”;
if ( empty( $value ) )
$value = __( 'Send’, 'contact-form-7′ );
$atts[’type’] = 'submit’;
$atts = wpcf7_format_atts( $atts );
$html = sprintf( '<button %1$s>%2$s</button>’, $atts, $value );
return $html;
}
[/php]
Przy okazji skoro jesteśmy przy Contact Form 7 niebawem pokażę jak wyłączyć jego skrypty ze strony głównej i innych stron gdzie formularza po prostu nie ma. To samo co robiliśmy z niepotrzebnym kodem woocommerce.