【问题标题】:Wordpress url rewriting - nice URL with name from SugarCRMWordpress url 重写 - 名称来自 SugarCRM 的好 URL
【发布时间】:2014-03-26 06:18:09
【问题描述】:

我正在开发一个 Wordpress 网站,它从 SugarCRM 加载大部分内容。

目前我在 URL 上获取船项目,例如

http://domain.com/boats/?id=123456789

但我想要一个不错的 URL,其名称是从 SugarCRM 加载的,例如

http://domain.com/boats/this-is-boat-name

有没有办法在不为 Wordpress 中的每个项目创建自定义帖子类型和帖子的情况下做到这一点?

【问题讨论】:

  • 更改设置中的永久链接结构,...
  • 这无济于事,因为我看不到从 Sugar 动态获取最终 url 部分的方法...
  • 你可以将名字和他们的ID存储在数据库中。
  • 在事先不知道名称的情况下,可能无法使用 htaccess 将 id 更改为名称。

标签: php wordpress .htaccess url-rewriting


【解决方案1】:

您可以尝试使用add_rewrite_rule

让用户通过网址domain.com/boats/12345/this-is-boat-name/访问页面

然后您可以在 PHP 中获取 ID,就好像它是 $_GET 查询字符串一样。

首先是重写规则;

$rule = '^(boats)/([^/]*)/([^/]*)/?';
$write = 'index.php?name=boats&id=$matches[1]&pagename=$matches[1]';
add_rewrite_rule($rule, $write, 'top');

然后是过滤器,这样您就可以像查询字符串一样访问页面 URL

add_filter('query_vars', 'foo_my_query_vars');
function foo_my_query_vars($vars){
    $vars[] = 'id';
    $vars[] = 'pagename';
    return $vars;
}

然后,在主题中的页面模板上,您可以选择(不可见的)查询字符串值,例如:

$id = get_query_var('id');
$pagename = get_query_var('pagename');
echo $id.' '.$pagename;

确保在将重写规则和过滤器添加到您的 functions.php 后刷新永久链接

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 2012-10-10
    • 1970-01-01
    相关资源
    最近更新 更多