我如何才能让内部锚点链接与WordPress的固定链接一起工作?

时间:2010-10-04 作者:Gabe

我有一个自定义模板页面,名为\'shop\', 可在URL中找到http://mysite.com/shop/. 此页面显示post\\u类型的所有帖子\'product\' 像这样:

<div class="product">  
<a name="product-name"></a>
<img src="path/to/image.jpg" />  
<h4>Product name</h4>`  
<p>A description of the product.</p>  
</div>`
在另一个页面上,我有这样一个链接:

<a href="/shop#product-name">Buy this product!</a>
我想把那个链接转到/shop 第页,然后向下滚动,将页面定位在此产品的锚定链接的右侧。但似乎WordPress的“永久链接”重定向正在阻碍:一旦切换到/shop#product-name 页面,URL将被重写为/shop/ 浏览器会使页面在顶部滚动。

我的.htaccess 文件正是WordPress生成的:它如下所示:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
如果您能帮助这些锚定链接正常工作,我们将不胜感激。

(Moderator Note: 标题最初是“我的permalinks安装程序不喜欢指向其他页面的锚定链接。”)

2 个回复
最合适的回答,由SO网友:Rarst 整理而成

愚蠢的问题,但你是否尝试过:

<a href="/shop/#product-name">Buy this product!</a>

SO网友:MikeSchinkel

你好@Gabriel Roth:

你有没有可能把它写成这样(注意后面的斜杠/shop)

<a href="/shop/#product-name">Buy this product!</a>
当然,如果您必须使用不带尾随斜杠的代码,我认为这可以满足您的需要,尽管我不能完全测试您的用例,但您必须尝试它。您可以将此代码复制到插件中,或者更容易地functions.php 文件:

add_filter(\'user_trailingslashit\', \'no_trailing_slash_on_shop\');
function no_trailing_slash_on_shop($url_path) {
  if ($url_path==\'/shop/\')
    $url_path = \'/shop\';
  return $url_path;
}

结束

相关推荐