programing

Wordpress 연락처 양식 7 사용자 지정 쇼트 코드

powerit 2023. 3. 19. 19:31
반응형

Wordpress 연락처 양식 7 사용자 지정 쇼트 코드

연락처 양식 7에는 [_date]와 같은 짧은 코드가 있습니다.하지만 일주일 후 날짜를 표시하고 싶습니다.

따라서 [next_week]라고 하는 커스텀 쇼트 코드를 Contact 폼7에 작성하고 수신한 이메일에 올바른 날짜가 표시됩니다.

연락처 양식 7의 커스텀 쇼트 코드를 작성하려면 어디서 어떻게 해야 합니까?

기능에 다음 항목을 추가합니다.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;
}

CF7 GUI 타입의 [Form]필드에서[custom_date next_week]

이제 사용할 수 있습니다.[next_week]메시지 본문에 있습니다.

이것은 응답 파티에는 조금 늦었지만, 나는 나의 양식과 메시지 본문에 커스텀 쇼트 코드를 추가하고 싶을 때 이 게시물을 계속 본다.CF7이나 메시지 본문에만 숏코드를 등록하지 않고 삽입할 수 있도록 하고 싶었습니다(CF7에서는 할 수 없는 것 같습니다).

결국 이렇게 된 거야

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

CF7에는 폼태그(연락처 폼 자체)와 메일태그(이메일)의 2종류의 태그가 있습니다.자세한 것은 이쪽입니다.


  1. 사용자 정의 양식 태그:

    사용할 수 있는 사용자 정의 양식 태그를 추가하려면wpcf7_add_form_tag()에서 기능하다.wpcf7_init액션 훅(자세한 내용은 참조).

    wpcf7_add_shortcode()승인된 답변의 함수는 폐지되고 이 함수로 대체되는 것으로 간주됩니다.

  2. 사용자 정의 메일 태그:

    커스텀 메일 태그를 추가할 수 있는 기본 제공 기능을 찾을 수 없습니다.다만, 다음의 몇개의 회피책이 있습니다.

    1. 커스텀 쇼트 코드를 유효하게 합니다(숏 코드 핸들러를 미리 작성하는 것을 잊지 말아 주세요).

      • DACrosby의 답변에 따르면 메일 구성요소의 경우.
      • 전체 메일(모든 구성요소), 사용wpcf7_special_mail_tags필터:

    function my_special_mail_tag( $output, $name, $html ) {
        if ( 'myshortcode' === $name ) {
            $output = do_shortcode( "[$name]" );
        }
        return $output;
    }
    add_filter( 'wpcf7_special_mail_tags', 'my_special_mail_tag', 10, 3 );
    
    1. 미리 채워진 데이터가 있는 사용자 정의 숨김 양식 태그를 양식에 추가한 후 메일에 사용합니다.[my-custom-form-tag-with-some-prepopulated-data]; 커스텀 폼태그는wpcf7_add_form_tag()를 참조해 주세요.

저의 해결책은 간단합니다.원하는 단축코드를 사용하여 연락처 양식 영역에 배치합니다.다음 코드만 함수에 배치하는 것을 잊지 마십시오.php 그러면 쇼트코드가 동작합니다.

add_filter('wpcf7_form_filter', 'do_shortcode');

지금까지 해본 적은 없지만, 쇼트 코드는 워드프레스 자체(CF7 등의 플러그인이라도)로 관리할 수 있다고 생각합니다.

간단한 쇼트 코드를 작성하는 예를 다음에 나타냅니다.

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

functions.php에 배치됩니다.

상세한 것에 대하여는, http://codex.wordpress.org/Shortcode_API 를 참조해 주세요.

또는 다음과 같은 플러그인을 사용하여 작업을 수행할 수 있습니다.http://wordpress.org/extend/plugins/shortbus/

언급URL : https://stackoverflow.com/questions/13179355/wordpress-contact-form-7-custom-shortcodes

반응형