Questo è un po 'in ritardo per la parte di risposta, ma continuo a vedere questo post quando voglio aggiungere codici brevi personalizzati per i miei moduli e il corpo del messaggio. Volevo essere in grado di inserire codici brevi senza registrarli speciali in CF7 e spesso solo nel corpo del messaggio (qualcosa che CF7 non sembra essere in grado di fare).
Ecco come ho finalmente fatto:
// Allow custom shortcodes in CF7 HTML form
add_filter('wpcf7_form_elements', 'dacrosby_do_shortcodes_wpcf7_form');
function dacrosby_do_shortcodes_wpcf7_form($form) {
$form = do_shortcode($form);
return $form;
}
// Allow custom shortcodes in CF7 mailed message body
add_filter('wpcf7_mail_components', 'dacrosby_do_shortcodes_wpcf7_mail_body', 10, 2);
function dacrosby_do_shortcodes_wpcf7_mail_body($components, $number) {
$components['body'] = do_shortcode($components['body']);
return $components;
};
// Add shortcode normally as per WordPress API
add_shortcode('my_code', 'my_code_callback');
function my_code_callback($atts){
extract(shortcode_atts(array(
'foo' => 'bar'
), $atts));
// do things
return $foo;
}
Io uso una versione più semplice per le mie esigenze: 'wpcf7_add_shortcode ('input_name', function ($ tag) {return ' '}); ' – vladkras