2012-11-01 10 views
6

Kontaktformular 7 hat einige Shortcodes, wie [_date], um das heutige Datum zu erhalten. Aber ich möchte das Datum in einer Woche anzeigen.Wordpress Kontaktformular 7 benutzerdefinierte shortcodes

Also muss ich einen benutzerdefinierten Shortcode zu Kontaktformular 7 erstellen, das sagt [nächste_Woche] und in der erhaltenen E-Mail das richtige Datum angezeigt wird.

Wo und wie erstelle ich benutzerdefinierte Shortcodes für Kontaktformular 7?

Antwort

13

Fügen Sie den folgenden zu 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; 
} 

Jetzt in der " Formular "Feld in CF7 GUI Typ [custom_date next_week]

Jetzt können Sie [next_week] in der Unordnung verwenden Alter Körper.

+1

Ich benutze eine einfachere Version für meine Bedürfnisse: 'wpcf7_add_shortcode ('input_name', Funktion ($ tag) {return ' '}); ' – vladkras

0

Ich habe nicht vorher, aber ich denke, dass shortcodes von wordpress selbst verwaltet werden (auch für Plugins als CF7).

Ein Beispiel eines einfachen Short zu erstellen ist:

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

in functions.php platziert.

Für weitere Informationen: http://codex.wordpress.org/Shortcode_API

Oder Sie ein Plugin wie diese, die die Arbeit tun können: http://wordpress.org/extend/plugins/shortbus/

+1

CF7 druckt [foobar], Beiträge und Seiten "foo und bar" drucken. Es hat also nicht funktioniert. – halliewuud

+0

Dies funktioniert gut, wenn Sie den Shortcode im Formular verwenden möchten, aber es funktioniert nicht in der E-Mail gesendet werden. Se meine Antwort für die richtige Lösung – halliewuud

0

Dies ist ein bisschen spät für die Antwort-Partei, aber ich sehe diesen Beitrag, wenn ich benutzerdefinierte Shortcodes zu meinen Formularen und Nachrichtentext hinzufügen möchte. Ich wollte Shortcodes einfügen können, ohne sie speziell in CF7 und oft nur im Nachrichtentext zu registrieren (etwas, was CF7 nicht zu tun scheint).

Hier ist, wie ich es endlich tat:

// 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; 
} 
Verwandte Themen