个性化阅读
专注于IT技术分析

获取地址栏中显示的URL

除了Wordpress本机执行的URL重写之外, 我还在使用一些URL重写。

基本思想是, 我使用一个类别页面, 该页面的地址看起来好像它属于其他位置, 因此/ blog / type / kids是WP中的真正类别。我使用/ kids /中的.htaccess文件重写了此文件, 以使该类别看起来像实际上是一个名为/ kids / programs的页面, 并在kids文件夹中包含以下代码:

RewriteEngine on
RewriteRule ^programs$ /blog/type/kids/ [P]

这发生在站点中的两个不同位置, 但是都在后台加载了相同的WP页面。这一切都很好。

我现在需要做的是根据要加载的位置设置一个变量, 以确保导航突出显示该站点的正确部分并显示正确的子导航。问题是我无法访问用户看到的新的重写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’]


#2


WordPress的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;
    }
?>
赞(0)
未经允许不得转载:srcmini » 获取地址栏中显示的URL

评论 抢沙发

评论前必须登录!