我正在尝试使用url参数(查询字符串)自动填充表单。问题是,当我使用“name”查询字符串(例如mysite.com/?name=xyz)时,它指的是pagename而不是name表单字段,并显示404错误。
例如,如果我键入mysite。com/?name=david,显示404,但如果我键入mysite。com/?name=关于它转到mysite。com/关于。
为了尝试在我拥有表单的页面上覆盖此内容,我尝试了以下代码:
function del_name ($qvar) {
if ( is_page( \'page-slug\' ) ) {
function is_name( $var ) {
return $var !== \'name\';
}
$qvar = array_filter($qvar, \'is_name\', ARRAY_FILTER_USE_KEY);
}
return $qvar;
}
add_action( \'query_vars\', \'del_name\' );
但这不起作用。如果有人能修改我的代码,我将不胜感激。
PS:我需要api集成的名称查询字符串,我知道这可能会破坏permalink结构,但我想尝试一下,看看是否值得权衡
最合适的回答,由SO网友:bosco 整理而成
在处理表格提交时,通常建议将您的表格张贴到a custom AJAX handler 或wp-admin/admin-post.php
form handler. 如果外部API集成要求您接受name
参数,将此功能设置为REST API 端点或控制器将为您提供对查询变量的完全控制。
也就是说,您可以使用request
筛选以重新映射传入的querystring变量。在这种情况下,我建议重新分配name
\'内部对其他事物的价值,以便不破坏任何其他事物或需要任何其他黑客工作。
“Most”;“美丽的permalink”;Per马斯tructs将映射URI/myslug
到pagename=myslug
查询var键/值。记住,我们可以重新分配name
对于您的页面:
function wpse391078_remap_myslug_page_name_var( $qvs ) {
if( ! empty( $qvs[\'pagename\'] ) && $qvs[\'pagename\'] === \'myslug\' ) {
$qvs[\'wpse391078_name\'] = $qvs[\'name\'];
unset( $qvs[\'name\'] );
}
return $qvs;
}
add_filter( \'request\', \'wpse391078_remap_myslug_page_name_var\' );