重建/重写URL以使其对SEO友好

时间:2017-10-24 作者:Naomi

我希望我的url如下所示www.example.com/events/United+States而不是现在的样子www.example.com/events/?country=United+States. 我不太清楚该怎么办。这是我的密码

      <?php
        $some_url = site_url().\'/events/\';
        $params = array( \'country\' => urlencode($counter) );
        $some_url = add_query_arg( $params, $some_url );

       ?>
     <a class="gpo_country" href="<?php echo $some_url ?>" >

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

可以使用创建重写规则add_rewrite_rule() 将匹配查询参数的给定路径:

function wpse_283774_rewrite() {
    add_rewrite_rule( \'^events/([^/]+)/?\', \'index.php?pagename=events&country=$matches[1]\', \'top\' );
}
add_action( \'init\', \'wpse_283774_rewrite\' );
这条规则将与后面的规则相匹配/events 作为country 查询参数。将第三个参数设置为top 意味着它将首先匹配我们的规则,否则它将尝试匹配后面的任何内容/events 作为子页,共页/events.

现在我们只需要注册country 作为有效的查询参数:

function wpse_283774_query_vars( $vars ) {
    $vars[] = \'country\';

    return $vars;
}
add_filter( \'query_vars\', \'wpse_283774_query_vars\' );
现在,在模板/函数中,您可以获得后面的任何内容/events 具有get_query_var( \'country\' ):

if ( get_query_var( \'country\' ) ) {
    echo \'Events for \' . get_query_var( \'country\' );
}
只需确保在添加代码后重新保存永久链接设置。

结束

相关推荐

Google中的SitelLinks搜索框和urlended搜索字符串

我最近实现了Sitelinks Search Box 我在搜索词和特殊字符方面有问题。例如,如果我在WP的标准搜索框中引入了一个带重音的字符,它就被正确使用了。如果我在sitelinks搜索框中也这样做,重音字符是URL enconded,WP直接使用它,并且不会正确返回restuls(大多数情况下结果为零)。实例正在搜索camión 从google搜索框,它重定向到https://example.com/?s=cami%25C3%25B3n WordPress没有给出任何结果。如果我直接在WP中搜索同一