我有一个目前正在使用的短代码,它在选定的产品页面上嵌入了一个按钮。单击此按钮后,用户将进入另一个页面上的联系人表单,并且单击此按钮的产品标题将作为查询字符串附加到联系人表单URL的末尾。然后从查询字符串中收集此产品标题,并自动填充到联系人表单上标记为“products”的字段中。
代码如下:
add_shortcode( \'dynamic_contact_button\', \'button_product_page\' );
function button_product_page() {
global $product;
return "href=\'/contact-form/?products=Product:%20" .$product->get_title(). "&#contact_form\'";
}
这将创建一个URL,例如:
https://www.example.com/contact-form/?products=Product: Brown Paint - 1L&#contact_form
它工作得很好。。。直到产品标题包含无法附加到查询字符串的“不安全”字符。例如,撇号字符
\' 为了在产品标题中以英尺为单位表示度量值,查询字符串将被剪切,其中一个字符串出现,这意味着只有部分产品标题被带入表单。我确信还有许多其他不安全的字符会导致类似的问题。
有什么我可以添加到这里的代码编码的产品名称文本被附加。。。因此,空格变为20,撇号变为27,等等。我看到PHP中有一个urlencode选项,但我对如何实现它缺乏理解
最合适的回答,由SO网友:John Zenith 整理而成
要对URL进行编码,可以使用PHPurlencode( $url )
功能或使用WordPressurlencode_deep( $array | $str );
作用
add_shortcode( \'dynamic_contact_button\', \'button_product_page\' );
function button_product_page() {
global $product;
return urlencode( "/contact-form/?products=Product:%20" .$product->get_title(). "&#contact_form" );
}
链接:
WordPress - urlencode_deep
urlencode