除了Wordpress本机执行的URL重写之外, 我还在使用一些URL重写。
基本思想是, 我使用一个类别页面, 该页面的地址看起来好像它属于其他位置, 因此/ blog / type / kids是WP中的真正类别。我使用/ kids /中的.htaccess文件重写了此文件, 以使该类别看起来像实际上是一个名为/ kids / programs的页面, 并在kids文件夹中包含以下代码:
RewriteEngine on
RewriteRule ^programs$ /blog/type/kids/ [P]
这发生在站点中的两个不同位置, 但是都在后台加载了相同的WP页面。这一切都很好。
我现在需要做的是根据要加载的位置设置一个变量, 以确保导航突出显示该站点的正确部分并显示正确的子导航。问题是我无法访问用户看到的新的重写URL。
【获取地址栏中显示的URL】理想情况下, 我正在寻找这样的东西:
if(strpos($_SERVER['PHP_SELF'], 'kids//programs')) {
$top_nav_item_id = 'kids';
} else {
$top_nav_item_id = 'programs';
$subnav_item_id = 'kids';
}
PHP_SELF解析为/blog/index.php, 而REQUEST_URI显示为/ blog / type / kids。因此, 都没有向我显示真实显示的/ kids / programs位置。
任何想法如何得到这个?也许WP为此具有内置标签?
干杯!
#1我也在使用重写, 这对我来说就像一个魅力:
$ _SERVER [‘ REDIRECT_SCRIPT_URL’ ]
你也可以使用
$ _SERVER [‘ REDIRECT_SCRIPT_URI’ ]
#2WordPress的get_permalink()函数在http://codex.wordpress.org/Function_Reference/get_permalink中有完整描述。这是用法:
<
?php echo get_permalink( $id );
?>
如前所述, 由于你是在循环外进行操作, 因此不能只调用get_permalink(), 而必须将$ id传递给函数。你可以从循环内部设置$ id的值, 然后在调用get_permalink($ id)之前使用ISSET($ id)(为了安全)。
如果尝试使用get_permalink进行操作后有任何问题(我可以在循环外对其进行测试, 但是我没有使用mod_rewrite规则进行设置), 则可以从循环内使用仍然设置$ id, 然后手动构建使用类似这样的类别的URL, 并在’ http:// yourservername /’ 之后连接:
<
?php if(ISSET($specpostid)) {
$catarray = get_the_category($id);
echo $catarray[0]->
cat_name;
} ?>
#3尝试这个
$ protocol = $ _SERVER [‘ HTTPS’ ] ==’ on’ 吗? ‘ https’ :’ http’ ; $ url = $ protocol。’ ://’ .$_SERVER [‘ HTTP_HOST’ ]。$ _ SERVER [‘ REQUEST_URI’ ];
网址变量$ url将为你提供网址, 如浏览器的地址栏中所示。
#4返回当前网址:
<
?php
function curPageURL() {
$pageURL = 'http';
if (@$_SERVER["HTTPS"] == "on") {$pageURL .= "s";
}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
?>
推荐阅读
- 从图像标题获取WordPress库图像描述
- 在localhost上遇到wordpress分页错误,但在dev上工作正常
- 在functions.php中获取受保护帖子的密码
- get_stylesheet_directory无法正常工作
- get_post_meta和add_post_meta在wordpress中不起作用
- 在产品类别上获取wp_Query的类别名称/子类别,以根据类别显示产品列表
- 在博客页面上获取最新帖子
- 获取要在[playlist]短代码中使用的上传音频文件的ID的函数
- Docker - 修改docker 镜像地址加快下载速度