sourcecode

연락처 양식 7의 양식 액션 URL을 변경하는 방법

copyscript 2023. 3. 25. 11:45
반응형

연락처 양식 7의 양식 액션 URL을 변경하는 방법

여러 개의 폼이 있는 워드프레스 사이트에서 Contact Form 7을 사용하고 있습니다.하나의 폼을 다른 폼의 액션 URL로 전송해야 합니다.

이전 스레드에 대한 아래의 답변을 찾았는데 어떻게 해야 할지 모르겠습니다."추가 설정"에 포함해야 하는 정확한 코드와 기능하는 코드를 지정할 수 있는 사람이 있습니까?php는 어떻게 생겼을까요?

도와주셔서 감사합니다!


diff에서 응답합니다.실타래 같은 거, 완전히 이해는 안 되는데...

* 네, 이 필터 후크 wpcf7_form_action_url을 사용하여 폼의 "action" 속성을 변경해야 합니다.(코드는 무엇입니까?)테마의 기능에 후크를 추가할 수 있습니다.php를 사용하여 ASP 페이지에서 폼 데이터를 처리합니다.(코드)*


PHP 코드에 대해 전혀 모르기 때문에 Wordpress API 내에서 코딩에 대한 간단한 크래시 코스를 알려드리겠습니다.

먼저, 함수와 변수의 차이를 알아야 합니다.변수는 임의의 값을 나타내는 단일 엔티티입니다.값은 무엇이든 상관없습니다.숫자, 누군가의 이름 또는 복잡한 데이터.

함수는 변수를 반환 또는 반환하거나 지정된 변수를 변경하기 위해 일련의 작업을 실행하는 것입니다.

<?php
$a = 1; //Number
$b = 'b'; //String *note the quotes around it*
$c = my_function(); //Call to a function called my_function
echo $a; //1
echo $b; //b
echo $c; //oh, hello
function my_function()
{
    return 'oh, hello';
}
?>

Wordpress는 자체 액션과 이벤트 기반 프로그래밍 스타일에 따라 느슨하게 필터 시스템을 활용합니다.

즉, Wordpress는 특정 이벤트가 발생하기를 "수신"하고 있으며, 발생 시 해당 이벤트에 연결된 함수(콜백이라고도 함)를 실행합니다.이것들은 「액션」과 「필터」입니다.그럼 뭐가 다른데?

액션은 무언가를 하는 기능이다.
필터는 물건을 반환하는 함수입니다.

이 모든 것이 당신의 문제와 어떻게 맞아떨어집니까?

Contact Form 7에는 폼에 의해 정보가 전송되는 URL을 반환하는 자체 필터가 있습니다.

그럼 필터 후크의 기본에 대해 알아보겠습니다.

add_filter('hook_name', 'your_filter');
  1. add_filter는 Wordpress에 특정 이벤트를 수신할 필요가 있음을 알려주는 함수입니다.
  2. 'hook_name'은 Wordpress가 기다리는 이벤트입니다.
  3. 'your_filter'는 'hook_name' 이벤트가 발생했을 때 호출되는 함수(또는 콜백)입니다.

이전 스레드에 대한 링크는 사용해야 하는 후크 이름이 'wpcf7_form_action_url'임을 나타냅니다.즉, add_filter에 콜을 발신하여 'hook_name'을 'wpcf7_form_action_url'로 설정하고 콜백으로 설정하는 함수의 이름으로 'your_filter'를 설정하기만 하면 됩니다.

이 작업이 완료되면 'your_filter' 대신 입력한 것과 일치하는 이름으로 함수를 정의하고 폼 액션을 수정하기 위한 URL을 반환해야 합니다.

문제는 다음과 같습니다.이렇게 하면 모든 양식이 변경됩니다.하지만 먼저 해야 할 일은:네 스스로 작동 코드를 알아낼 수 있는지 알아봐.함수에서 코드를 작성하기만 하면 됩니다.php 그리고 결과가 어떻게 나오는지 알려주세요.

갱신:

이렇게 빨리 입수할 수 있었던 것은 훌륭하고, 당신이 얼마나 많은 연구를 하고 있는지 알 수 있습니다.

이 모든 것을 기능에 넣습니다.php

add_filter('wpcf7_form_action_url', 'wpcf7_custom_form_action_url');
function wpcf7_custom_form_action_url()
{
    return 'wheretopost.asp';
}

앞서 언급한 바와 같이 모든 양식에 영향을 미칩니다.이것이 특정 페이지의 폼에만 영향을 주는 경우 다음과 같은 작업을 수행할 수 있습니다.

add_filter('wpcf7_form_action_url', 'wpcf7_custom_form_action_url');
function wpcf7_custom_form_action_url($url)
{
    global $post;
    $id_to_change = 1;
    if($post->ID === $id_to_change)
        return 'wheretopost.asp';
    else
        return $url;
}

$id_to_change 값을 영향을 주는 투고/페이지 ID를 나타내는 수치로 변경하기만 하면 됩니다.따라서 예를 들어 Action URL을 변경하려는 About Page가 있는 경우 Admin Dashboard에서 About Page의 ID 번호를 찾고(Page Editor로 이동하여 URL에서 ID 번호를 검색) 1을 원하는 ID 번호로 변경할 수 있습니다.

도움이 되시길 바라며 행운을 빕니다.

@maiorano84의 답변은 훌륭하지만, Post가 아닌 Form ID를 확인해야 한다고 생각합니다.여기 제 버전이 있습니다.

add_filter('wpcf7_form_action_url', 'wpcf7_custom_form_action_url');
function wpcf7_custom_form_action_url($url)
{
    $wpcf7 = WPCF7_ContactForm::get_current();
    $wpcf7_id = $wpcf7->id();

    $form_id = 123;
    

    return $wpcf7_id == $form_id? '/action.php' : $url;
}

또, WPCF7 AJAX 를 무효로 할 필요가 있습니다.이것은, 테마 기능에 다음의 코드를 넣는 것으로 무효로 할 수 있습니다.php

apply_filters( 'wpcf7_load_js', '__return_false' );

설명서에 나와 있는 대로 정상적으로 송신된 후에 액션을 추가할 수 있습니다.

필터를 추가하면 폼에 대한 작업이 변경되지만 안타깝게도 플러그인의 기능도 손상됩니다.다른 답변과 같이 필터를 추가하면 제출 후에도 양식이 스피너 상태를 유지할 수 있습니다.

다음과 같은 고급 설정을 사용하여 양식에 제출 시 다른 작업을 수행할 수 있습니다.

on_submit: "alert('submit');"

고급 설정에 대한 자세한 내용은 여기를 참조하십시오.

@abbas-arif에 따르면, 그의 솔루션은 잘 작동하지만 한계가 있습니다.이 솔루션은 해당 ID를 가진 게시물에 있는 모든 양식에 대한 양식 수행을 변경합니다.폼의 ID를 직접 사용하는 것이 좋습니다.이를 얻으려면 word press > 5.2를 누릅니다.

add_filter('wpcf7_form_action_url', 'wpcf7_custom_form_action_url');
function wpcf7_custom_form_action_url($url)
{
    $cf7forms = WPCF7_ContactForm::get_current();
    $Form = $cf7forms -> id;
    
    
        switch($Form){
            case 1:
                return 'destination like salesforce url 1...';
            case 2:
                return 'destination like salesforce url 2...';
            case 3:
                return 'destination like salesforce url 3...';
            default:
                return $url;
            
        }

}

언급URL : https://stackoverflow.com/questions/14177844/how-to-change-form-action-url-for-contact-form-7

반응형