Wordpress联系人表单7基于url动态选择下拉字段
我有以下情况。我有联系表单7插件和两个不同服务的页面。每个页面都有一个联系人表单,在侧边栏中有“选择”下拉列表,其中包含所有服务。 当您在特定的服务中时,如何实现这一点?默认情况下,将根据服务自动选择下拉字段(可能是通过URL)?Wordpress联系人表单7基于url动态选择下拉字段,wordpress,contact-form-7,Wordpress,Contact Form 7,我有以下情况。我有联系表单7插件和两个不同服务的页面。每个页面都有一个联系人表单,在侧边栏中有“选择”下拉列表,其中包含所有服务。 当您在特定的服务中时,如何实现这一点?默认情况下,将根据服务自动选择下拉字段(可能是通过URL)? 我没有发现这样的话题,我对这种情况是如何发生的非常感兴趣。最好没有插件。提前感谢:)假设您有3个服务,服务A、服务B、服务C,这样,如果您所在的页面属于服务B,URLdomain.com/Service-B/my page,换句话说,URL本身有足够的信息来确定此页面
我没有发现这样的话题,我对这种情况是如何发生的非常感兴趣。最好没有插件。提前感谢:)假设您有3个服务,服务A、服务B、服务C,这样,如果您所在的页面属于服务B,URL
domain.com/Service-B/my page
,换句话说,URL本身有足够的信息来确定此页面是服务B的一部分。有两种方法可以继续在下拉列表中实现自动选择
1在客户端,在页面加载后使用JavaScript
使用以下脚本选择正确的选项
(函数($){
$(文档).ready(函数(){
//确定当前页面,
让page=window.location.href,opt='';
//为您的站点注释以下行,这仅用于此示例测试。
佩奇http://example.com/service-b/my-page';
开关(真){
案例页。索引of('service-b')>0:
opt='serviceb';
打破
案例页面。indexOf('service-c')>0:
opt='servicec';
打破
案例页。indexOf('service-a')>0:
opt='servicea';
打破
}
$('select[name=“select services”]')。查找('option[value=“”+opt+'”)。属性('selected','selected');
})
})(jQuery)
选择一项服务
服务A
服务B
服务C
让我们假设您有3个服务,服务A、服务B、服务C,如果您所在的页面属于服务B,URLdomain.com/Service-B/my page
,换句话说,URL本身有足够的信息来确定此页面是服务B的一部分。有两种方法可以继续在下拉列表中实现自动选择
1在客户端,在页面加载后使用JavaScript
使用以下脚本选择正确的选项
(函数($){
$(文档).ready(函数(){
//确定当前页面,
让page=window.location.href,opt='';
//为您的站点注释以下行,这仅用于此示例测试。
佩奇http://example.com/service-b/my-page';
开关(真){
案例页。索引of('service-b')>0:
opt='serviceb';
打破
案例页面。indexOf('service-c')>0:
opt='servicec';
打破
案例页。indexOf('service-a')>0:
opt='servicea';
打破
}
$('select[name=“select services”]')。查找('option[value=“”+opt+'”)。属性('selected','selected');
})
})(jQuery)
选择一项服务
服务A
服务B
服务C
您可以通过wp过滤器挂钩尝试:
您可以通过wp过滤器挂钩进行尝试:
非常感谢你的回答。不幸的是,我不能同时处理这两个问题。JavaScript解决方案给了我一个语法错误。find-'missing)after argument list'和php解决方案我的整个联系人表单都消失了。很明显,我做得不对。你有什么想法吗?对不起,我在js代码中创建了一个类型,我已经更正了它,并将其设置为一个JSFIDLE示例,你可以运行测试并查看它的工作情况。以上是一个或多个解决方案,客户端使用JavaScript的解决方案1,服务器端使用PHP的解决方案2,两者都不需要。是的,当然,我就是无法调整。现在,一切都与javascript解决方案完美配合。非常感谢您快速正确的回答:)感谢您的反馈!声誉低于15的人所投的票将被记录,但不会改变公开显示的帖子分数。抱歉:(很快我会有15:)是的,但是你可以选择答案…除非你希望得到另一个答案。非常感谢你的答案。不幸的是,我不能同时处理这两个问题。JavaScript解决方案给了我一个语法错误。find-'missing)after argument list'和php解决方案我的整个联系人表单都消失了。很明显,我做得不对。你有什么想法吗?对不起,我在js代码中创建了一个类型,我已经更正了它,并将其设置为一个JSFIDLE示例,你可以运行测试并查看它的工作情况。以上是一个或多个解决方案,客户端使用JavaScript的解决方案1,服务器端使用PHP的解决方案2,两者都不需要。是的,当然,我就是无法调整。现在,一切都与javascript解决方案完美配合。非常感谢您快速正确的回答:)感谢您的反馈!声誉低于15的人所投的票将被记录,但不会改变公开显示的帖子分数。抱歉:(很快我会有15:)是的,但是你可以选择答案…除非你希望得到另一个答案。
add_filter( 'do_shortcode_tag','sercice_check',10,3);
function sercice_check($output, $tag, $attr){
// Checking your contact form id
// [contact-form-7 id="659" title="My Service"]
if( isset( $attr['id'] ) && $attr['id'] == 659 ){ //you can even check for specific attributes
global $wp;
$service='';
// Site url like : www.mysite.com/service/service-a/
switch(true){
case false !== strpos($wp->request, 'service-a' ):
$service='Service A';
break;
case false !== strpos($wp->request, 'service-a' ):
$service='Service B';
break;
}
return str_replace('value="'.$service.'"', 'value="'.$service.'" selected="selected"', $output);
}
return $output;
}