0

我目前正在创建一个自定义 WordPress 主题。一些存档页面将包含隐藏表格(以图片表示)。这些表格中的每一个都代表一个帖子。当用户单击表单时,会运行 GET 请求,并且浏览器会检索特定帖子的内容。

每个隐藏表单都将帖子的标题作为值(作为这样的查询字符串:/lokaler/?lokal=Studion('Studion' 是标题,'lokaler' 是帖子类型))。这工作正常,我得到所需的信息,没问题。

当我想对包含 Ä 的标题执行相同操作时,就会出现问题。查询 /lokaler/?lokal=Sammanträdesrummet (显然)不起作用,但我似乎找不到解决方法......我在此页面上使用了 JavaScript 和 PHP 的组合。

我将如何解决它以使 GET 请求有效但我不必更改帖子的标题?

//how the form is created:

 <form method="GET" id="lokal_<?php echo get_the_title(); ?>" class="single_lokal_container single_lokal_lokal">
   <input type="hidden" name="lokal" value="<?php echo get_the_title(); ?>">

   etc...


//how post is queried
$current_lokal_from_uri = htmlspecialchars($_GET['lokal']);

            $args3 = array(
                'name'          =>      $current_lokal_from_uri,
                'post_type'     =>      'lokaler'
            );

4

2 回答 2

0

您应该能够通过 GET 参数很好地传递这些。只要确保一致地编码和解码:

var plain = 'åäö';
var urlencoded = encodeURIComponent(plain);
var unencoded = decodeURIComponent(urlencoded);

console.log('plain', plain);// plain åäö 
console.log('urlencoded', urlencoded);// urlencoded %C3%A5%C3%A4%C3%B6 
console.log('unencoded', unencoded);// unencoded åäö
echo urldecode('%C3%A5%C3%A4%C3%B6'); // åäö

请记住,HTMLSpecialChars 用于将字符编码为 html 安全风格而不是参数编码(例如,&变为&amp;<变为$lt;

于 2020-04-20T15:22:27.343 回答
0

我已经设法解决了这个问题。

我使用 urlencode 和 decode 作为表单的值。尝试从解码值生成 wp_query 时出现下一个问题。最后,这是一个简单的修复:我必须用 a 替换解码值中的 ä:


            $current_lokal_from_uri_decoded = urldecode($current_lokal_from_uri);      

            if(strpos($current_lokal_from_uri_decoded, 'ä') !== false) {
                $current_lokal_from_uri_decoded = str_replace('ä', 'a', $current_lokal_from_uri_decoded);
            } 

            $args3 = array(
                'name'          =>      $current_lokal_from_uri_decoded,
                'post_type'     =>      'lokaler'
            );
于 2020-04-21T12:44:06.310 回答