2016-06-23 4 views
0

사용자가 항공기 유형을 선택하고, 비행 시간, 특전 및 기타 추가 기능을 항공편에 추가 할 수있는 중력 양식을 사용하여 양식을 만듭니다. 중력 양식의 확인란 필드에 내가 만든 사용자 정의 게시물 유형으로 채 웁니다.일단 중력 양식이 해당 게시물을 선택하면 추천 이미지를 얻으십시오.

사용자가 선택한 항공편의 왼쪽과 왼쪽에있는 다른 특전을 선택하면 GF의 HTML 입력란에 {all_fields}이 표시됩니다. 항공기 확인란이 사용자 정의 게시물 유형으로 채워지기 때문에 해당 게시물 유형의 추천 이미지를 가져 와서 HTML 필드 위치 위에 표시 할 수 있기를 원합니다.

여기에 나열된 코드는 내가 정의 포스트 유형과 그 체크 박스를 채우는 데 사용하고 기능입니다

:

add_filter('gform_pre_render_6', 'ldm_do_bac_aircraft_large'); 
add_filter('gform_pre_validation_6', 'ldm_do_bac_aircraft_large'); 
add_filter('gform_pre_submission_filter_6', 'ldm_do_bac_aircraft_large'); 
add_filter('gform_admin_pre_render_6', 'ldm_do_bac_aircraft_large'); 

function ldm_do_bac_aircraft_large($form) { 

    foreach ($form['fields'] as &$field) { 
     if (strpos($field->cssClass, 'bac-aircraft-large') === false) { 
      continue; 
     } 

     $posts = get_posts(array(
      'numberposts' => -1, 
      'post_status' => 'publish', 
      'post_type'  => 'ldm_build_card', 
      'order'   => 'ASC', 
      'tax_query'  => array(
       array(
        'taxonomy' => 'ldm_build_card_categories', 
        'field'  => 'slug', 
        'terms'  => array('large'), 
       ), 
      ), 
     )); 

     $choices = array(); 

     foreach ($posts as $post) { 
      $choices[] = array('text' => $post->post_title, 'value' => $post->post_title); 
     } 

     $field->choices = $choices; 
    } 
    return $form; 
} 

그래서 내 목표는 사용자가 선택 중 하나 Large, Super-Mid, Mid, 또는 때를위한 부분입니다 Small 항공기 (그리고 그것들은 범주입니다) 멀티 페이지 GF의 다음 페이지는 사용자가 선택한 비행기를 표시 할뿐만 아니라, 그 위의 게시물/항공기 추천 이미지를 표시하기를 원합니다. 따라서 이미지는 선택한 항공기에 따라 변경됩니다.

GF에서 사용자가 선택한 항목에 따라 해당 게시물 ID의 추천 이미지를 어떻게 얻을 수 있는지 생각하지 못합니까? 내가 뭘하는지 더 명확하게 너무 좋아

UPDATE 6/24

. 나 중력 양식을 사용하여 다중 페이지 항공기, 특전, 시간, 추가 기능 등을 얻는 양식을 만듭니다. 양식의 항공기 '페이지'에 사용자 정의 게시 유형을 채워야했습니다. 나는 이것들을 채워 넣었지만 실제 이미지 위에 특집 이미지, 항공기 이름, 범위 등과 같은 게시 정보를 표시해야했습니다. 나는 그 일을 처리했지만 만족스럽지 만 그 양식이 제출되어 양식의 다음 페이지로 이동하면 해당 게시물의 이미지를 가져와야하므로 선택한 다른 모든 필드와 함께 해당 게시물 특집 이미지가 표시됩니다.

이 경우 제목을 표시하는 항공기를 선택 했으므로 함께 이동하려면 추천 이미지가 필요했습니다. 원래 AJAX Gravity Form이 필요했습니다. jQuery로 물건을 움직이기 때문에 이미지가 표시되지 않고 콘솔 로그를 확인할 때 정의되지 않은 것으로 표시됩니다.

내가 이런 식으로하는 이유를 말할 수 있습니다. 선택 사항으로 사용자 지정 게시 유형을 표시해야하는 다중 페이지 GF에서 처음으로 발생하는 균열이기 때문에 내가 한 일입니다.

좋아, 이미지가 표시되지 않았기 때문에 나는 항공기의 필터링 가능한 범주를 뱉어 내고있는 스크립트가 제거되고 있다는 아이디어가 있었기 때문에 양식에서 AJAX를 사용하지 않기로 결정했습니다. 나는 AJAX를 끄고 이미지가 표시되도록 정확했습니다. 그래서 내 질문은이 스크립트를이 특정 양식에 대한 AJAX 요청에 포함시킬 수있는 방법입니다.

아래 항공기가 선택되면 특정 영역에 게시 이미지를 표시 할 jQuery가 있습니다.

function ldm_add_membership_aircrafts() { 
    ?> 
    <script type="text/template" id="single-membership-listings"> 
     <% _.each(membershipAircrafts, function(membershipAircraft) { %> 
      <div id="aircraft<%= membershipAircraft.id %>" class="single-membership-inner clearfix col-sm-4" data-aircraft-title="<%= membershipAircraft.title %>"> 
       <% if(membershipAircraft.imageURL) { %> 
        <img class="membership-aircraft-image" src="<%= membershipAircraft.imageURL %>" alt="<%= membershipAircraft.title %>" /> 
        <div class="single-membership-content-container"> 
       <% } else { %> 
        <div class="single-membership-content-container"> 
       <% } %> 
        <div class="single-membership-title"><%= membershipAircraft.title %></div> 
        <div class="single-membership-range"> 
         <p id="membership-label">Range:</p> 
         <p id="membership-range-content"><%= membershipAircraft.range %></p> 
        </div> 
        <div class="single-membership-passengers"> 
         <p id="membership-label">Passengers:</p> 
         <p id="membership-passengers-content"><%= membershipAircraft.passengers %></p> 
        </div> 
        <div class="single-membership-baggage"> 
         <p id="membership-label">Luggage Capacity:</p> 
         <p id="membership-baggage-content"><%= membershipAircraft.baggage %></p> 
        </div> 
        <div class="single-membership-cabinDimensions"> 
         <p id="membership-label">Cabin Dimensions:</p> 
         <p id="membership-cabinDimensions-content"><%= membershipAircraft.cabinDimensions %></p> 
        </div> 
       </div> 
      </div> 
     <% }); %> 
    </script> 

    <script type="text/template" id="single-categories-listings"> 
     <% var categoryName; %> 
     <% var count = 0; %> 
     <div class="membership-categories-inner"> 
      <% _.each(membershipCategories, function(membershipCategory) { %> 
       <% if(count !== 0 && categoryName !== membershipCategory.taxonomy) { %> 
        </div> 
       <% } %> 
       <div data-term-id="<%= membershipCategory.id %>" class="single-membership-category <%= membershipCategory.termName %><% if(count === 0){ %> category-active <% } %>"><%= membershipCategory.termName %></div> 
       <% categoryName = membershipCategory.taxonomy; %> 
       <% count++; %> 
      <% }); %> 
       </div> 
     </div> 
    </script> 
    <?php 
} 

그것에 대해 생각 나는 스크립트가 제거되고 모르겠지만 AJAX 실제로 내가 배치하고있는 사용자 정의 필드를 제거하고 : var checkboxValue = $('#gform_page_6_1 input[type=checkbox]:checked').val(); var aircraftSelect = $('#membershipAircrafts').find('[data-aircraft-title="'+checkboxValue+'"]'); var aircraftImage = $(aircraftSelect).find('.membership-aircraft-image'); console.log(aircraftImage); $('.summary-image').html(aircraftImage);

지금 여기에 내가 제거되는 줄 알았는데 스크립트입니다

: 부분과 실제 입력 여기서

echo '<li id="aircraft-tax" class="gfield">'; 
    echo '<div class="row">'; 
     echo '<div class="col-sm-12">'; 
      echo '<div id="membershipCategories" class="membership-categories"></div>'; 
     echo '</div>'; 
    echo '</div>'; 
echo '</li>'; 
echo '<li id="aircraft-content" class="gfield">'; 
echo '<div class="row">'; 
     echo '<div class="col-sm-10 col-sm-offset-1">'; 
      echo '<div id="membershipAircrafts" class="membership-aircrafts"></div>'; 
     echo '</div>'; 
    echo '</div>'; 
echo '</li>'; 

위에 추가 할 jQuery를 사용하는 등 전 입력 위에 배치 JQuery와 사용하고있다

$('#field_6_2').after($('#aircraft-tax')); 
$('#aircraft-tax').after($('#aircraft-content')); 

무엇이 AJAX가이 정보를 삭제하지 못하게 할 수 있습니까? 이것을 AJAX 요청에 포함시킬 수 있다면 GF에서 AJAX를 해제하면 이미지가 표시되는 것처럼 느껴집니다. 3

**

**

UPDATE 나는 내 문제를 발견했다. Gravity Forms에서 ajax를 활성화하면 원래 페이지에로드 한 템플릿이 추가되지 않는다는 것을 알 수 있습니다. 예를 들어, 내 페이지에 포함시킬 부분이 있습니다. get_template_part('partials/membership-template', 'aircraft'); 원래 추가되었지만 다음 양식 페이지 (여러 페이지 양식이기 때문에)로 이동 한 후에는이 페이지에서 호출됩니다. 페이지가 삭제됩니다.

그래서 양식을 다음 양식 페이지로 이동 한 후에이 서식 파일이나 부분을 제거하지 못하게하려면 어떻게해야합니까?

답변

0

양식을 사용자가 비행기 분류 카테고리 (사용자 정의 분류 기준)를 선택하게 만들 때 추천 이미지를 표시하려면 실제 게시물을 가져와야합니다. 양식 페이지를 렌더링 할 위치를 추가하십시오.

$args = array(
    'posts_per_page' => 1, 
    'post_type' => 'ldm_build_card', 
    'ldm_build_card_categories' => 'large',//or selected type 
    'post_status' => 'publish' 
); 
$show_image = get_posts($args); 
if($show_image) { 
    get_the_post_thumbnail($show_image[0]->ID, 'image-size'); 
} 

UPDATE : 경우에 나는 당신의 질문을 오해 : 포스트 ID는 양식 입력 그래서 get_the_post_thumbnail($entry[id-of-selection-field], 'image-size'); 것 또한 출력 이미지에 있어야합니다.

UPDATE 2 다른 한 페이지로부터 데이터를 얻을 수는 두 번째 페이지에 HTML 필드를 추가하는 pre_render 필터를 사용

add_filter('gform_pre_render_{form_id}', 'populate_html'); 

다음 페이지를 얻을 GFFormDisplay를 사용한다. 양식 필드를 반복하여 게시물 ID를 가져 와서 이미지를 가져옵니다.

function populate_html($form) { 
    //this is a 2-page form with the data from page one being displayed in an html field on page 2 
    $current_page = GFFormDisplay::get_current_page($form['id']); 
    $html_content = "The information you have submitted is as follows:<br/><ul>"; 
    if ($current_page == 2) { 
     foreach ($form['fields'] as &$field) { 
      //gather form data to save into html field (id 3 on my form), exclude page break 

       foreach ($field->inputs as $input) { 
        if ($input['id'] == {selected-plane-input}) { 
         $input_name = 'input_' . str_replace('.', '_', $input['id']); 
         $value = rgpost($input_name); 
         $html_content .= '<p>' . wp_get_attachment_url(get_post_thumbnail_id($value)). '</li>'; 
        } 
       } 

     } 
    } 
    foreach ($form['fields'] as &$field) { 
     if ($field->id == {your-html-field-id}) { 
       //set the field content to the html 
       $field->content = $html_content; 
      } 
    } 
    return $form; 
} 
+0

이미지가 어떻게 작동하고 표시되는지는 잘 모르겠습니다. 나는 중력 양식에 이미지가있는 게시물을 실제로 표시하는 다른 파일을 가지고 있는데 jquery로 입력 체크 상자 위에 추가하고 있습니다. 내가 다시 달리고있는 문제는 선택한 비행기가있는 다중 페이지 양식의 다음 페이지에 게시물의 추천 이미지를 표시해야한다는 것입니다. 선택한 항목을 기반으로 표시 할 미리보기 이미지를 어떻게 가져올 수 있는지 잘 모르겠습니다. –

+0

업데이트를 참조하십시오. 문제는 단지 두 번째 페이지로 정보를 가져 와서 표시하는 것입니까? – dg4220

+0

답장을 보내 주셔서 감사합니다. 이전에 시도했지만 이미지를 얻지 못했습니다. 내가 지금하고있는 방법은 html 요소의 ID에서 이미지의 위치를 ​​가져 오려고하지만 다음 페이지로 이동하면 해당 요소가 사라지고 정의되지 않은 것으로 표시된다는 것입니다. –