2012-11-01 17 views
6

Il modulo di contatto 7 ha alcuni codici brevi, come [_date] per ottenere la data di oggi. Ma voglio mostrare la data tra una settimana.Modulo di contatto Wordpress 7 codici brevi personalizzati

Quindi ho bisogno di creare uno shortcode personalizzato per contattare il modulo 7 che dice "next_week" e nell'e-mail ricevuta la data corretta viene visualizzata.

Dove e come creare codici di accesso personalizzati per contattare il modulo 7?

risposta

13

Aggiungere il seguente al functions.php

wpcf7_add_shortcode('custom_date', 'wpcf7_custom_date_shortcode_handler', true); 

function wpcf7_custom_date_shortcode_handler($tag) { 
    if (!is_array($tag)) return ''; 

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

    $next_week = date('Y-m-d', time() + (60*60*24*7)); 
    $html = '<input type="hidden" name="' . $name . '" value="' . $next_week . '" />'; 
    return $html; 
} 

Ora, nel " Modulo "campo in tipo GUI CF7 [custom_date next_week]

Ora è possibile utilizzare [next_week] nel caos corpo di età.

+1

Io uso una versione più semplice per le mie esigenze: 'wpcf7_add_shortcode ('input_name', function ($ tag) {return ' '}); ' – vladkras

0

Non l'ho mai fatto prima, ma penso che gli shortcode siano gestiti da wordpress stesso (anche per i plugin come CF7).

Un esempio per creare un semplice shortcode è:

//[foobar] 
function foobar_func($atts){ 
return "foo and bar"; 
} 
add_shortcode('foobar', 'foobar_func'); 

messi in functions.php.

Per maggiori informazioni: http://codex.wordpress.org/Shortcode_API

Oppure si può utilizzare un plugin come questo che fanno il lavoro: http://wordpress.org/extend/plugins/shortbus/

+1

stampe CF7 [pippo], post e le pagine stampate "foo e bar". Quindi non ha funzionato. – halliewuud

+0

Funziona bene quando si desidera utilizzare lo shortcode nel modulo ma non funziona nell'e-mail inviata. Se la mia risposta alla soluzione corretta è – halliewuud

0

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; 
} 
Problemi correlati