我有一个自定义模板页面,名为\'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安装程序不喜欢指向其他页面的锚定链接。”)
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;
}