Предположим, у вас есть 3 сервиса: Service A, Service B, Service C, так что если вы находитесь на странице, принадлежащей сервису B, с URL domain.com/service-b/my-page
, другими словами, самого URL достаточно информация, позволяющая определить, что эта страница является частью службы B. Есть 2 способа перейти к автоматическому выбору c в раскрывающемся списке,
1 на стороне клиента, используя JavaScript на странице загружен,
используйте следующий сценарий, чтобы выбрать правильный вариант,
(function($){
$(document).ready(function(){
//determine the current page,
let page = window.location.href, opt='';
//comment the following line for your site, this is only for this example test.
page = 'http://example.com/service-b/my-page';
switch(true){
case page.indexOf('service-b')>0:
opt='serviceb';
break;
case page.indexOf('service-c')>0:
opt='servicec';
break;
case page.indexOf('service-a')>0:
opt='servicea';
break;
}
$('select[name="select-services"]').find('option[value="'+opt+'"]').prop('selected', 'selected');
})
})(jQuery)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name="select-services">
<option value="">select a service</option>
<option value="servicea">Service A</option>
<option value="serviceb">Service B</option>
<option value="servicec">Service C</option>
</select>
2 другой способ - изменить опцию выбора на стороне сервера до загрузки страницы, используя php и подключив фильтр do_shortcode_tag, который запускается один раз был выполнен шорткод формы cf7. Поместите следующий код в свою тему functions.php
файл,
add_filter('do_shortcode_tag','set_service',10,3);
function set_service($html, $attr, $tag){
//check this is a cf7 shortcode.
if('contact-form-7' !== $tag){
return $output;
}
//if you have several forms, you can also check this is the right form using $attr['id']
//determine which page you are on
global $wp;
$serv='';
switch(true){
case false !== strpos($wp->request, 'service-a' ):
$serv='servicea';
break;
case false !== strpos($wp->request, 'service-b' ):
$serv='serviceb';
break;
case false !== strpos($wp->request, 'service-c' ):
$serv='servicec';
break;
}
return str_replace('value="'.$serv.'"', 'value="'.$serv.'" selected="selected"', $html);
}